我想定义一个实现通用Comparable接口的类。在课堂上,我还定义了一个通用类型元素T
。为了实现该接口,我将比较委托给T
。这是我的代码:
public class Item<T extends Comparable<T>> implements Comparable<Item> {
private int s;
private T t;
public T getT() {
return t;
}
@Override
public int compareTo(Item o) {
return getT().compareTo(o.getT());
}
}
当我尝试对其进行编译时,会出现以下错误信息:
Item.java:11: error: method compareTo in interface Comparable<T#2> cannot be applied to given types;
return getT().compareTo(o.getT());
^
required: T#1
found: Comparable
reason: actual argument Comparable cannot be converted to T#1 by method invocation conversion
where T#1,T#2 are type-variables:
T#1 extends Comparable<T#1> declared in class Item
T#2 extends Object declared in interface Comparable
1 error
谁能告诉我原因以及如何解决?
Item
(不带任何类型参数)是原始类型,因此:
我们可以通过任何形式的Item
到Item.compareTo
。例如,这将编译:
new Item<String>().compareTo(new Item<Integer>())
该方法o.getT()
返回Comparable
而不是T
,这将导致编译错误。
在第一点下的示例中,传递Item<Integer>
给后Item.compareTo
,我们会错误地传递Integer
到String.compareTo
。编译错误使我们无法编写执行此操作的代码。
我认为您只需要删除原始类型:
public class Item<T extends Comparable<T>>
implements Comparable<Item<T>> {
...
@Override
public int compareTo(Item<T> o) {
return getT().compareTo(o.getT());
}
}
本文向大家介绍php实现的通用图片处理类,包括了php实现的通用图片处理类的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现的通用图片处理类。分享给大家供大家参考。具体如下: 该图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步。
本文向大家介绍C#实现Access通用访问类OleDbHelper完整实例,包括了C#实现Access通用访问类OleDbHelper完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现Access通用访问类OleDbHelper。分享给大家供大家参考,具体如下: 最近在做一个项目数据库用的是Access,第一次使用Access数据库,刚开始做有些不顺,数据库的操作和SqlSe
问题内容: 让我们假设两个接口: 现在,我要创建一个工厂(例如,…),但是对于两个接口的实现类都不是必需的(例如在java参数化的通用静态工厂中)。本应以这种方式工作(其中农具和工具): 这应该是工厂: 我收到此错误的地方: 顺便说一句:是否可以使该方法静态? 问题答案: 由于Java中的泛型是使用擦除来实现的,因此的类型信息将在运行时不可用,这意味着您无法以这种方式实例化(或)。 但是,您 可以
问题内容: 能否请您帮我如何使用和一起键入,就像通过使用来演示我的方法一样 问题答案: 为了安全起见,请考虑此处所示。这将允许使用此处讨论的。 附录:即使是更一般的情况,我也会使用,如下所示。如键盘示例所示,我将使用按键绑定在组件之间共享。 附录:为了说明@kleopatra的评论,我更新了绑定到的代码。实际上,我只使用尚未绑定到文本字段操作或正常使用所需的键。
本文向大家介绍JavaScript中的类与实例实现方法,包括了JavaScript中的类与实例实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript中的类与实例实现方法。分享给大家供大家参考。具体如下: JavaScript 中没有父类, 子类的概念, 也没有class 和 instance 的概念, 全靠 prototype chain来实现继承. 当查找一个对象的
本文向大家介绍PHP实现与java 通信的插件使用教程,包括了PHP实现与java 通信的插件使用教程的使用技巧和注意事项,需要的朋友参考一下 由于公司这块项目需要和java对接的一些东西 又不想用webservice 所以弄了个php模块 折腾了好长时间编译一直过不去. 索性就把源码修改了.经测试可用. 另外附一份我的安装记录 让大家少走一些弯路 另外这玩意需要安装java 直接去官网下载就