Java-8 consente di definire metodi statici all'interno dell'interfaccia, ma restricts esso invocazione soltanto nome dell'interfaccia:illegale metodo di interfaccia statico chiamata
9.4: An interface can declare static methods, which are invoked without reference to a particular object.
Es:
interface X {
static void y() {
}
}
...
X x = new X() {};
x.y();
cause di errore:
error: illegal static interface method call
x.y();
^
the receiver expression should be replaced with the type qualifier 'X'
Spesso in JLS questo tipo di divieti hanno una spiegazione. In questo caso non ho trovato nulla di dettagliato. Quindi sto cercando una spiegazione completa o autorevole di questa regola: perché è vietato invocare il metodo statico tramite un particolare riferimento all'oggetto? Cosa si rompe?
Forse la domanda migliore è il motivo per cui i metodi statici possono essere richiamati sui riferimenti oggetto in primo luogo ... –
In questa nota, come si ottiene un'istanza di un'interfaccia X nella riga sopra? – aiguy
totalmente d'accordo con @SkinnyJ Penso che gli sviluppatori Java stanno cercando di correggere il loro errore che hanno fatto rendendo disponibile l'oggetto statico per oggetto che è un po 'confuso – silentprogrammer