Java 使用比较方法的可比较接口
谁能解释一下为什么下面的代码不起作用:Java 使用比较方法的可比较接口,java,comparable,Java,Comparable,谁能解释一下为什么下面的代码不起作用: public static void main(String[] args) throws IOException { Comparable<Integer> q = new Integer(4); Comparable<Integer> o = new Integer(4); // Problematic line int j = o.compareTo(q); if (j == -1)
public static void main(String[] args) throws IOException
{
Comparable<Integer> q = new Integer(4);
Comparable<Integer> o = new Integer(4);
// Problematic line
int j = o.compareTo(q);
if (j == -1)
System.out.println("yes");
else
System.out.println("no");
}
换句话说,与创建普通类实例相比,接口实现何时是可互换的?当我使用compareTo()方法时会出现错误,该方法是Comparable接口的一部分,由所有包装类(如整数)实现
// This will work
Comparable<Integer> o = new Integer(4);
int j = o.compareTo(new Integer(4));
// of course j will be 0, because 4 is equal to 4.
所以我猜Comparable q=新的整数(4)代码>和整数q=新整数(4)代码>不应该有任何区别。谁能解释一下吗
谢谢。Comparable#compareTo()
方法的参数属于T
类型,其中T
是Comparable
类型的泛型变量。换句话说,对于声明为compariable
的变量,该方法将只接受整数。您试图传递的参数被声明为类型Comparable
,这是不兼容的。AComparable
只能比较整数
//这样就行了
可比o=新整数(4);
int j=o.compareTo(新的整数(4));
//当然j是0,因为4等于4。
您的问题是什么?是的。可比
是可以与整数
进行比较的东西,而不是可以与另一个可比
进行比较的东西。
// This will work
Comparable<Integer> o = new Integer(4);
int j = o.compareTo(new Integer(4));
// of course j will be 0, because 4 is equal to 4.