Java 8 Typ Rückschluss mit nicht-statischen Zugriff von statischen Mitgliedern

8

Betrachten Sie den folgenden Code:

%Vor%

Ich bin neulich darauf gestoßen, als ich versehentlich eine statische Methode auf nicht statische Weise aufgerufen habe. Ich weiß, dass Sie statische Methoden nicht auf nicht statische Weise aufrufen sollten, aber ich frage mich immer noch, warum es in diesem Fall nicht möglich ist, auf den Typ zu schließen?

    
sqroot raypin 08.05.2015, 20:49
quelle

1 Antwort

4

Der eigentliche Fehler lautet invalid method reference static bound method reference .

Das macht Sinn, wenn Sie über vier Arten von Methoden Referenzen wissen:

  1. Verweis auf eine statische Methode.
  2. Verweis auf eine gebundene nicht-statische Methode.
  3. Verweis auf eine ungebundene nicht-statische Methode.
  4. Verweis auf einen Konstruktor

JLS Erklärung:

  

Es ist ein Fehler bei der Kompilierung, wenn eine Methode Referenz Ausdruck die Form Reference hat :: [Typeargument] Identifier und die Kompilierung-Deklaration ist statisch, und Reference ist kein einfacher oder qualifizierter Name

Neben schlechtes Design gibt es Performance-Overhead für die Erfassung (Begrenzungs) den Empfänger.

    
user2418306 09.05.2015, 19:27
quelle