我在编写一个Java的通用类时遇到了困难,其中泛型成员需要进行比较。
以下是我编写的代码片段,但它给我编译错误。
public class TestClass <E extends Comparable<E>>{
private E data1;
private E data2;
public void fun(){
if(data1 > data2){
}
}
}
我收到了一个错误,说操作符compare('>')无效。根据我的理解,如果我扩展了Comparable接口,我应该能够执行这个操作。
E extends Integer
而不是E extends Comparable<E>
,那么data1 > data2
就可以正常工作。我猜测这是因为>
操作适用于整数,所以在这种情况下允许。难道在扩展Comparable<E>
时不应该应用相同的概念吗?因为>
操作在所有可比较的对象上都是允许的。 - shantanuInteger
(非原始类型),它能够工作的唯一原因是由于 Java 5 的自动解包装,它首先将Integer
转换为int
来进行比较。(否则,您必须使用Integer.compareTo(Integer anotherInteger)
,就像上面那样。) - ziesemer