Gibt es eine Möglichkeit, eine Methode zur Reflexion in Java statisch zu referenzieren? Hier ist ein Beispielcode, um Ihnen eine Vorstellung davon zu geben, was ich versuche:
%Vor%Ich erkenne, dass die obige Syntax nicht funktioniert, aber ich frage mich, ob es eine ähnliche Syntax gibt, die tatsächlich funktioniert. Ich möchte eine Möglichkeit, Reflektion zu verwenden, ohne sich Gedanken über die inhärenten Gefahren machen zu müssen, wenn man eine Methode mit einem String referenziert.
Gibt es eine Möglichkeit, dies zu tun, oder ist es nur ein Rohrtraum?
Methodenreferenzen erklärt
Diese Methode zum Vergleichen der Geburtsdaten zweier Personenexemplare existiert bereits als
%Vor%Person.compareByAge
. Sie können diese Methode stattdessen im Rumpf des Lambda-Ausdrucks aufrufen:Da dieser Lambda-Ausdruck eine bestehende Methode aufruft, können Sie eine & gt; Methodenreferenz anstelle eines Lambda-Ausdrucks:
%Vor%
und es erklärt die verschiedenen Arten von Methodenreferenzen:
%Vor%Es gibt vier Arten von Methodenreferenzen:
HISTORISCHER HINWEIS (geschrieben vor Java 8 wurde fertiggestellt)
Ich denke, der Java-Closures-Vorschlag hat so etwas. Stephen Colebourne sagt:
Stefan und ich freuen uns, die Veröffentlichung von v0.4 des Verfahrens First-Class Methods: Java-style closures bekannt zu geben.
Änderungen
Seit v0.3 haben wir versucht, einige der erhaltenen Rückmeldungen in die verschiedenen Foren zu integrieren. Die wichtigsten Änderungen sind wie folgt:
1) Konstruktor- und Feldliterale. Es ist jetzt möglich, typsichere, während der Kompilierung geänderte Instanzen von
%Vor%java.lang.reflect.Constructor
undField
mithilfe der FCM-Syntax zu erstellen:
, aber ich denke nicht, dass diese Syntax in jeder Versand-JVM verfügbar ist. Closures selbst sind definitiv nicht in Java 7. Sie können es in Java 8 sehen.
Die Java-Closures-Website enthält einen Zeiger auf "Method references , das ein wenig aktueller ist, obwohl es nicht so aussieht, als hätten sie die Syntax viel geändert.
Tags und Links java reflection