您正在使用决定命名的类型参数变量来遮盖该类型。
java.lang.Integer``Integer
您的代码等同于
public class NaturalComparator<T> { public int compare(T o1, T o2) { return o1.intValue() - o2.intValue(); }}显然不会编译,因为
Object(的边界
T)没有声明
intValue()方法。
你想要的是
public class NaturalComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { return o1.intValue() - o2.intValue(); }}在这种情况下
java.lang.Integer,用作类型参数。



