In der letzten Ausgabe des Newsletters von Heinz Kabutz, # 255 Java 10: Abgeleitete lokale Variablen , wird es gezeigt Das var
ist in Java 10 kein reserviertes Wort, da Sie auch var
als Bezeichner verwenden können:
Sie können jedoch d. h. assert
nicht als Bezeichner verwenden, wie in var assert = 2
, da assert
ein reserviertes Wort ist.
Wie es im verknüpften Newsletter heißt, ist die Tatsache, dass var
kein reserviertes Wort ist, eine gute Nachricht, da Code aus früheren Java-Versionen, die var
als Bezeichner verwenden, ohne Probleme in Java 10 kompiliert werden kann .
Also, was ist dann var
? Es ist weder ein expliziter Typ noch ein reserviertes Wort der Sprache, daher darf es ein Bezeichner sein, allerdings hat es eine besondere Bedeutung, wenn es in Java 10 eine lokale Variable deklariert. Was genau nennen wir es im Zusammenhang mit a lokale Variablendeklaration?
Zusätzlich zu der Unterstützung der Abwärtskompatibilität (indem älterer Code zugelassen wird, der var
als Bezeichner zum Kompilieren enthält), gibt es weitere Vorteile, wenn var
nicht ein reserviertes Wort ist?
Laut JEP-286: Inferenz lokaler Variablen , var
ist
kein Schlüsselwort; Stattdessen ist es ein reservierter Typname .
(Frühere Versionen des JEP ließen Raum für die Implementierung entweder als reservierter Typname oder als kontextsensitives Schlüsselwort; der vorherige Pfad wurde letztendlich gewählt.)
Da es kein "reserviertes Schlüsselwort" ist, ist es möglich, es weiterhin in Variablennamen (und Paketnamen) zu verwenden, aber nicht in Klassen- oder Schnittstellennamen.
Ich denke, der größte Grund dafür, dass var
kein reserviertes Keyword ist, ist die Rückwärtskompatibilität mit altem Quellcode.