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
,这是不兼容的。

A
Comparable
只能比较整数

//这样就行了
可比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.