2013-02-20 35 views
6

在当今AP计算机科学类,我有这个代码:为什么可以调用Java的接口方法的方法? [可比]

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

这是有效的。它打印1(或-1,我忘了),但有可能对它们进行比较。

我明白接口变量是指实现该接口的类的对象,但什么是没有意义的,我是一个接口变量如何被分配一个整数,然后都调用了它的方法。在这种情况下,哪个对象是被调用的compareTo()方法?什么都没有实例化!

回答

11

这叫做autoboxing,你的原始类型int自动包装成一个Integer实例,它是一个对象,它实现了Comparable接口。

5

你的整数被装箱为整数(即​​Objects)。也就是说,原语正在被包裹的图元对象替换。需要注意的是Integer实现Comparable

相关问题