2013-02-20 2 views
6

In AP Informatik Klasse heute, hatte ich diesen Code:Warum ist es möglich, Methode auf Java-Interface-Methode aufzurufen? [Vergleichbare]

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

Und dies gilt. Es druckt 1 (oder -1, ich vergesse was), aber es ist möglich, sie zu vergleichen.

Ich verstehe, dass Interface-Variablen beziehen sich auf ein Objekt einer Klasse, die diese Schnittstelle implementiert, aber was für mich keinen Sinn macht, wie eine Schnittstellenvariable eine ganze Zahl zugewiesen werden kann, und dann eine Methode aufgerufen haben. Welches Objekt wird in diesem Fall die compareTo() -Methode aufgerufen? Nichts wurde sogar instanziiert!

Antwort

11

Dies wird autoboxing, Ihr primitiver int Typ genannt wird automatisch in eine Integer Instanz eingewickelt, die ein Objekt ist, und es tut Comparable-Schnittstelle implementieren.

5

Ihre Ganzzahlen werden mit Ganzzahlen verknüpft (d. H. Objects). Das heißt, die Grundelemente werden durch Objekte ersetzt, die diese Grundelemente umhüllen. Beachten Sie, dass IntegerComparable implementiert.

Verwandte Themen