您正在使用决定命名的类型参数变量来遮盖该类型。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
,用作类型参数。