Java没有为compareTo方法的int自动装箱?

Java没有为compareTo方法的int自动装箱?,java,int,compareto,autoboxing,Java,Int,Compareto,Autoboxing,为什么a.compareTo(b)compile(int不能被取消引用)?我知道compareTo需要对象,但我认为自动装箱会在必要时自动将int变成Integer。为什么在这种情况下不会发生自动装箱?还有什么其他情况不会发生呢?从中,将发生装箱的两种情况是,当原语为: 作为参数传递给需要相应包装器类的对象的方法 分配给相应包装器类的变量 示例中正在计算的表达式(a.compareTo(d))不属于这些场景中的任何一种 中有一些有趣的附加信息,描述了赋值转换、方法调用转换和强制转换的机制和规

为什么
a.compareTo(b)
compile(
int不能被取消引用
)?我知道
compareTo
需要对象,但我认为自动装箱会在必要时自动将
int
变成
Integer
。为什么在这种情况下不会发生自动装箱?还有什么其他情况不会发生呢?

从中,将发生装箱的两种情况是,当原语为:

  • 作为参数传递给需要相应包装器类的对象的方法
  • 分配给相应包装器类的变量
示例中正在计算的表达式(
a.compareTo(d)
)不属于这些场景中的任何一种

中有一些有趣的附加信息,描述了赋值转换、方法调用转换和强制转换的机制和规则

class Test{
    public static void main(String[] args){
        int a = 1;
        int b = 5;

        Integer c = new Integer(1);
        Integer d = 5; //autoboxing at work

        System.out.println(c.compareTo(d));
        System.out.println(a.compareTo(b));
    }
}