2013-02-20 15 views
6

W AP Komputer klasy Nauka dzisiaj, miałem ten kod:Dlaczego można wywołać metodę w interfejsie Java? [Porównywalne]

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

I to jest ważne. Wypisuje 1 (lub -1, zapomniałem), ale można je porównać.

Rozumiem, że zmienne interfejsowe odnoszą się do obiektu klasy, który implementuje ten interfejs, ale nie ma dla mnie sensu, w jaki sposób zmiennej interfejsowej można przypisać liczbę całkowitą, a następnie wywołać metodę. Jakiego obiektu w tym przypadku jest wywoływana metoda compareTo()? Nic nawet nie powstało!

Odpowiedz

11

To się nazywa autoboxing, twój prymitywny int typ jest automatycznie zawijane do instancji Integer, która jest przedmiotem i robi wdrożyć Comparable interfejs.

5

Twoje liczby całkowite są podzielone na liczby całkowite (tj. Objects). To znaczy, że prymitywy są zastępowane obiektami owijającymi te prymitywy. Zauważ, że Integer implementuje Comparable.

Powiązane problemy