4
我在编写泛型类时可以比较其泛型成员,这是一个难题。如何比较泛型类java的泛型类成员
以下是我写的代码片段,但它给我编译错误。
public class TestClass <E extends Comparable<E>>{
private E data1;
private E data2;
public void fun(){
if(data1 > data2){
}
}
}
它被说比较(“>”)操作giveing我的错误是无效的。 根据我的理解,如果我扩展可比较,我应该可以进行此操作。
谢谢ziesemer。有一个疑问。如果我写'E extends Integer',而不是'E extends Comparable'而不是'data1> data2'工作正常。我假设它在这种情况下允许'>'操作,因为它适用于整数。当我扩展'Comparable '时,不应该有同样的概念,因为在所有可比较的对象上都允许'>'操作。 –
shantanu
2011-12-31 17:41:32
@shantanu - 就是这样 - '<' and '>'操作符不适用于Comparable或任何其他非原始类型(int,short等)。它甚至可以与Integer(非基元)一起工作的唯一原因是Java 5的自动拆箱,它首先将'Integer'转换为'int'来进行比较。 (否则,您必须使用'Integer.compareTo(Integer anotherInteger)',就像上面那样。) – ziesemer 2011-12-31 17:48:48
非常感谢您的好解释。 – shantanu 2011-12-31 17:55:13