Java 泛型方法签名中的类型不匹配

2024-01-01

我有一个Executor调用接口实例的类IService<T> with KeyList<T>争论。

   class Executor{
      KeyList<?> _keys;
      IService<?> _service;
      public Executor(IService<?> service, KeyList<?> keys){
         _service = service;
         _keys = keys;
      }

      public void execute(){
         _service.invoke(_keys);
      }
   }

   interface IService<T>{
      public void invoke( KeyList<T> keys);
   }

   class KeyList<T> {
      List<T> _list;
   }

I used <?>对于 Executor 的成员,因为它不关心 IService 和 KeyList 如何参数化,但以下内容会引发编译错误,指出参数不适用:

 public void execute(){
    _service.invoke(_keys); //error on invoke
 }

我猜它在抱怨是因为KeyList<?>不等于KeyList<T>, but <?>是相同的<? extends Object>,所以我有点困惑。有更好的选择吗?


A wildcard http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html (?) 代表某种特定的未知类型。但是您在这里处理两个单独的通配符 - 它们可能不同。请改用以下内容:

class Executor<T> {
    KeyList<T> _keys;
    IService<T> _service;
    public Executor(IService<T> service, KeyList<T> keys){
        _service = service;
        _keys = keys;
    }

    public void execute(){
        _service.invoke(_keys);
    }
}

这声明了一个类型参数T为班级Executor,然后将其用作类型参数_keys and _service,确保它们兼容。

如果你无法参数化Executor,尝试使用参数化帮助器类:

class Executor {

    private static final class ServiceAndKeys<T> {

        private final KeyList<T> keys;
        private final IService<T> service;

        ServiceAndKeys(IService<T> service, KeyList<T> keys) {
            this.service = service;
            this.keys = keys;
        }

        void execute() {
            service.invoke(keys);
        }
    }

    private final ServiceAndKeys<?> serviceAndKeys;

    public <T> Executor(IService<T> service, KeyList<T> keys){
        serviceAndKeys = new ServiceAndKeys<T>(service, keys);
    }

    public void execute() {
        serviceAndKeys.execute();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 泛型方法签名中的类型不匹配 的相关文章

  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • Jquery - Jquery Wysiwyg 以字符串形式返回 html

    我正在使用 Jquery Wysiwyg 编辑器 并且尝试捕获构成内容区域的 html 以存储在数据库中 有没有办法获取元素的 html 并将其保存为字符串 我的代码看起来像 ul li This is a test li ul 我想要一个
  • Jasper Reports 将绝对路径更改为相对路径?

    我是 jasper 的新手 我想在 jrxml 中编译报告并从绝对路径到相对路径导出为 pdf 目前这些代码仅在绝对路径下工作 导出为 pdf 下载网络浏览器的文件夹 Reports ConsumationReport jrxml 内的 j
  • Hadoop 2.2.0 jobtracker 未启动

    看来我没有jobtracker使用 Hadoop 2 2 0 JPS没有显示 50030端口没有人监听 也没有相关日志jobtracker在 的里面logs文件夹 这是因为 YARN 的原因吗 如何配置和启动作业跟踪器 如果你使用YARN框
  • React JS 多个提交按钮react-hook-form

    我使用react hook form进行表单验证和提交 使用单个提交类型按钮一切正常 现在我需要三个按钮 保存草稿 预览页面中的数据值 和 提交审批 我可以选择退出模式选择单选按钮 但想要具有三个按钮提交功能 这需要表单数据 为输入字段添加
  • Blackberry 10:Android 运行时和 JNI

    BlackBerry 10 Android Runtime 是否支持 JNI 我想在我的 android 应用程序中执行本机 c 代码 我想将其部署在黑莓 10 操作系统上 在我的 android 应用程序中 我使用 JNI 来处理从本机
  • 带引导程序的幻灯片放映

    我尝试用引导程序制作幻灯片 以便您滑动浏览图像 但图像没有显示 仅显示下一个和上一个按钮 我正在使用 asp net mvc5 这是jquery document ready function myModal myModal row img
  • 对 PixelFormat 感到困惑

    我很困惑像素格式 http developer android com reference android graphics PixelFormat html在安卓上 我的设备是摩托罗拉 Defy 我有两个问题 在安卓2 3上getWind
  • 使用 parquet 文件元数据创建 Hive 表

    我编写了一个 DataFrame 作为镶木地板文件 而且 我想使用镶木地板中的元数据使用 Hive 读取文件 写入 parquet write 的输出 common metadata part r 00000 0def6ca1 0f54 4
  • 连接由 V-USB 库供电的 libUSB 设备用于 AVR

    我写了一个简单的程序 基于下列的 http codeandlife com 2012 01 22 avr attiny usb tutorial part 1 教程 通过 USB 端口将数据从 AVR 芯片 Attiny 2313 发送到计
  • Node.js 多进程日志记录

    我现在正在做一个基于集群的node js项目 我陷入了日志记录的困境 经过一番研究后 我找到了一个解决方案 就这个 我不知道这是否是一个好主意 想法是这样的 只有master进程可以写入日志文件 如果当前进程是worker 那么它会向mas
  • LINQ 标识函数

    只是关于 LINQ 语法的一点小问题 我正在压平一个IEnumerable
  • PHP OCI、Oracle 和默认数字格式

    当我使用 PHP OCI 从 Oracle 数据库执行提取时 小于 1 的数字显示为 XXXXXX e g 249999 有没有办法将其设置为0 XXXXXX或任何其他格式 无需修改每个要使用的查询to char 明确地 也许通过一些会话参
  • asp .net 2.0 上的最大查询字符串长度

    我正在研究 ASP NET 版本 2 0 和 IIS 6 我通过调用其 URL 并向其传递查询字符串来从主页调用弹出的 aspx 页面 对于特定情况 我的查询字符串的长度超过 2000 个字符 因此 弹出屏幕第一次打开时效果很好 但每当该弹
  • 当有超过 n 个查询时,如何记录“show processlist”?

    我们的 mysql 进程有时会积压并且进程开始排队 我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因 我想跑show full processlist 通过 cron 作业并将输出保存到文本文件 如果有多个 50返回行 你能为
  • UICollectionView - 图像是随机设置的

    我在我的应用程序中使用collectionView 我正在 didSelect 委托中为单元格背景视图设置图像 但是当我选择一个单元格索引路径时 图像将设置为 3 个单元格索引路径 当我滚动 collectionView 时 图像会随机更改
  • JavaFX 2.x:将鼠标单击坐标转换为 XYChart 轴值

    在 JavaFX 2 x 中 我使用 XYChart 并且希望当鼠标在图表上移动时显示图表的 X Y 轴坐标值 我在图表上设置了一个事件处理程序来处理 setOnMouseMoved 事件 但是 我不确定如何将 MouseEvent 的 g
  • MIPS汇编中$是什么意思?

    什么是 在 MIPS 汇编语言中是什么意思 举个例子 Add 28 R4 R3 表达式中的美元符号是什么 在汇编程序中 符号 通常表示两种不同的含义 数字前缀表示该数字以十六进制书写 本身是一个数值表达式 其计算结果为 当前位置 即组装下一
  • 如何使用 boto3 客户端删除仍然可用的 HIT

    我有一些已发布的 HIT 可供工作人员使用 现在我想删除它们 尽管它们还没有被工作人员完成 根据此文档 这是不可能的 https boto3 amazonaws com v1 documentation api latest referen
  • React 功能组件:如何从外部访问变量 useEffect()

    我已经简化了下面的问题 我正在使用useEffect确保 dom 在选择项目之前已渲染 这非常有效 并且在尝试获取这些元素之前不需要超时 但是如果我想在另一个组件中使用这些值 如何访问它们 The printAll 函数找不到变量 impo
  • Java 泛型方法签名中的类型不匹配

    我有一个Executor调用接口实例的类IService