为什么可以在Java接口方法上调用方法?[可比]

Ale*_*zer 6 java interface comparable

今天在AP计算机科学课上,我有这个代码:

    Comparable x = 45;
    Comparable y = 56;
    System.out.println(x.compareTo(y));
Run Code Online (Sandbox Code Playgroud)

这是有效的.它打印1(或-1,我忘了哪个),但可以比较它们.

我理解接口变量是指实现该接口的类的对象,但对我来说没有意义的是如何为接口变量分配一个整数,然后在其上调用一个方法.在这种情况下,什么对象是被调用的compareTo()方法?什么都没有实例化!

Jac*_*ack 11

这称为自动装箱,您的原始int类型会自动包装到一个Integer实例中,该实例是一个对象,它确实实现了Comparable接口.


Bri*_*new 5

你的整数被装入整数(即Objects).也就是说,基元被包裹这些基元的对象所取代.注意Integer实现Comparable.