有人能帮我使用泛型比较一个整数和一个双精度浮点数吗?
这是我的代码:
public static <T extends Comparable<? super T>> int compare(T arg1, T arg2)
{
return arg1.compareTo(arg2);
}
public static void main(String[] args)
{
Number i = new Integer(5);
Number j = new Double(7);
System.out.println(GenericsTest.compare(i, j));
}
我收到的错误信息是: 边界不匹配:类型GenericsTest的通用方法compare(T,T)不适用于参数(Number,Number)。 推断出的类型Number不是有限制的参数>的有效替代品。
Number
没有扩展Comparable
?这可能是异常的原因吗? - FildorNumber
。它不符合你对超类型的要求。如果你坚持使用你的方法,你需要让超类型扩展Comparable
。 - FildorInteger.valueOf(5)
而不是new Integer(5)
,这样可以避免不必要的内存分配。请参阅《Effective Java》。 - SkyWalker