6

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

    Comparable x = 45;
    Comparable y = 56;
    System.out.println(x.compareTo(y));

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

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

4

2 回答 2

11

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

于 2013-02-20T17:20:59.447 回答
5

您的整数被装箱为整数(即Objects​​)。也就是说,原语正在被包装这些原语的对象所取代。请注意,整数实现Comparable.

于 2013-02-20T17:21:33.813 回答