2013-02-20 3 views
6

In AP Computer Science classe oggi, ho avuto questo codice:Perché è possibile chiamare il metodo sul metodo di interfaccia Java? [Paragonabile]

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

E questo è valido. Stampa 1 (o -1, non ricordo quale), ma è possibile confrontarli.

Capisco che le variabili di interfaccia si riferiscono a un oggetto di una classe che implementa tale interfaccia, ma ciò che non ha senso per me è come una variabile di interfaccia può essere assegnata a un intero e quindi avere un metodo chiamato su di essa. Quale oggetto in questo caso viene chiamato il metodo compareTo()? Nulla è stato nemmeno istanziato!

risposta

11

Questo è chiamato autoboxing, proprio primitiva int tipo è avvolto automaticamente in un Integer esempio, che è un oggetto e lo fa implementare Comparable interfaccia.

5

I numeri interi vengono inseriti in caselle di numeri interi (ad esempio Objects). Vale a dire, i primitivi vengono sostituiti da oggetti che avvolgono quei primitivi. Si noti che Integer implementa Comparable.