2013-02-20 99 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

相關問題