如何在java中比较泛型classin的泛型类型成员

如何在java中比较泛型classin的泛型类型成员,java,generics,Java,Generics,我在用java编写一个泛型类时遇到了困难,它的泛型成员可以进行比较 下面是我编写的代码片段,但它给了我编译错误 public class TestClass <E extends Comparable<E>>{ private E data1; private E data2; public void fun(){ if(data1 > data2){ } } } 公共类TestClass{ 私人电子数据1;

我在用java编写一个泛型类时遇到了困难,它的泛型成员可以进行比较

下面是我编写的代码片段,但它给了我编译错误

public class TestClass <E extends Comparable<E>>{
private E data1;
private E data2;

    public void fun(){
        if(data1 > data2){

        }
    }

}
公共类TestClass{
私人电子数据1;
私人电子数据2;
公众娱乐{
如果(数据1>数据2){
}
}
}
它告诉我比较(“>”)操作无效,这给了我一个错误。
根据我的理解,如果我扩展了可比性,我应该能够执行这个操作。

< P> java不是C++,并且没有操作符重载。您需要使用,
可比
界面提供的。例如:

if(data1.compareTo(data2) > 0){

谢谢齐塞默。一个疑问。如果我写
E extends Integer
,而不是
E extends Comparable
,那么
data1>data2
工作正常。我假设它在这种情况下允许
操作,因为它适用于integer。当我扩展
Comparable
时,不应该应用相同的概念吗?因为
可以对所有可比较的对象进行操作。@shantanu-仅此而已,''运算符不能用于Comparable或任何其他非基元类型(int、short等)。它甚至可以与
Integer
(非原语)一起工作的唯一原因是Java 5的自动取消装箱,它首先将
Integer
转换为
int
来进行比较。(否则,您必须使用
Integer.compareTo(Integer-anotherInteger)
,就像上面一样。)非常感谢您的解释。