Java-8 statische Methoden innere Schnittstelle, aber restricts es Aufruf durch nur Schnittstellennamen ermöglicht definieren:Illegal statische Schnittstellenmethodenaufruf
9.4: An interface can declare static methods, which are invoked without reference to a particular object.
Eg:
interface X {
static void y() {
}
}
...
X x = new X() {};
x.y();
Ursachen Fehler:
error: illegal static interface method call
x.y();
^
the receiver expression should be replaced with the type qualifier 'X'
Oft in JLS haben solche Verbote eine Erklärung. In diesem Fall habe ich nichts Detailliertes gefunden. Ich suche daher nach einer umfassenden oder verbindlichen Erklärung dieser Regel: Warum ist es verboten, die statische Methode über eine bestimmte Objektreferenz aufzurufen? Was bricht es?
Vielleicht ist die bessere Frage, warum statische Methoden auf Objektreferenzen an erster Stelle aufgerufen werden können ... –
In diesem Sinne, wie erhalten wir eine Instanz einer Schnittstelle X in der Zeile darüber? – aiguy
stimme völlig mit @SkinnyJ Ich glaube, Java-Entwickler versuchen, ihren Fehler zu korrigieren, indem sie die statische verfügbar machen durch Objekt, das etwas verwirrend ist – silentprogrammer