In C # 6.0 wurde der Operator nameof()
eingeführt, der eine Zeichenfolge zurückgibt, die den Namen von Klassen- / Funktions- / Methoden- / lokalen-Variablen- / Eigenschaftsbezeichnern darstellt, die in ihn eingefügt werden.
Wenn ich eine Klasse wie diese habe:
%Vor%Ich kann den Operator folgendermaßen verwenden:
%Vor%Dies ist nützlich, da die korrekte Zeichenfolge zum Zeitpunkt der Kompilierung überprüft wird. Wenn ich den Namen einer Eigenschaft / Methode / Variable falsch schreibe, gibt der Compiler einen Fehler zurück. Auch wenn ich umgestalte, werden alle Zeichenfolgen automatisch aktualisiert. Siehe zum Beispiel diese Dokumentation für echte Anwendungsfälle.
Gibt es in Java ein Äquivalent zu diesem Operator? Ansonsten, wie kann ich das gleiche Ergebnis (oder ähnliches) erreichen?
Leider gibt es nichts dergleichen. Ich hatte vor einer Weile nach dieser Funktionalität gesucht und die Antwort schien zu sein, dass dieses Zeug im Allgemeinen nicht existiert.
Siehe Name eines Feldes abrufen
Sie könnten Ihr Feld natürlich mit einer "benannten" Anmerkung versehen, um dieses Ziel für Ihre eigenen Klassen zu erreichen. Es gibt eine große Vielfalt von Frameworks, die tatsächlich von ähnlichen Konzepten abhängen. Trotzdem ist dies nicht automatisch.
Sie können nicht.
Sie können eine Methode oder ein Feld mithilfe von Reflektion abrufen, aber Sie müssen den Methodennamen als String fest codieren, wodurch der ganze Zweck beseitigt wird.
Das Konzept der Eigenschaften ist nicht in Java eingebaut wie in C #. Getters und Setter sind nur normale Methoden. Sie können nicht einmal so einfach auf eine Methode verweisen wie in Ihrer Frage. Du könntest mit Reflektion versuchen, ein Handle zu einer Getter-Methode zu bekommen und dann die get
abschneiden, um den Namen der "Eigenschaft" zu erhalten, die ihr ähnelt, aber das ist hässlich und nicht das Gleiche.
Wie bei lokalen Variablen ist das überhaupt nicht möglich.
Sie können nicht.
Wenn Sie mit Debug-Symbolen kompilieren, enthält die .class-Datei eine Tabelle mit Variablennamen (auf diese Weise ordnen Debugger Variablen Ihrem Quellcode zu), aber es gibt keine Garantie dafür, dass dies vorhanden ist und in der Laufzeit nicht verfügbar ist .