Java 10 – Inferenz lokaler Variablentypen
JEP 286 – Inferenz lokaler Variablentypen
Local Variable Type Inference ist eine der offensichtlichsten Sprachänderungen, die ab Java 10 verfügbar sind. Es erlaubt, eine Variable mit var zu definieren, ohne ihren Typ anzugeben. Der Compiler leitet den Typ der Variablen anhand des bereitgestellten Werts ab. Dieser Typrückschluss ist auf lokale Variablen beschränkt.
Alte Art, lokale Variablen zu deklarieren.
String name = "Welcome to tutorialspoint.com";
Neue Art, lokale Variablen zu deklarieren.
var name = "Welcome to tutorialspoint.com";
Jetzt leitet der Compiler den Typ der Namensvariablen als String ab, indem er den bereitgestellten Wert untersucht.
Bemerkenswerte Punkte
-
Kein Typrückschluss bei Mitgliedsvariablen, Methodenparametern, Rückgabewerten.
-
Die lokale Variable sollte zum Zeitpunkt der Deklaration initialisiert werden, sonst wird der Compiler nicht abgeleitet und gibt einen Fehler aus.
-
Der Rückschluss auf lokale Variablen ist innerhalb des Initialisierungsblocks von Schleifenanweisungen verfügbar.
-
Kein Laufzeit-Overhead. Da der Compiler den Typ basierend auf dem bereitgestellten Wert ableitet, gibt es keinen Leistungsverlust.
-
Keine dynamische Typänderung. Sobald der Typ der lokalen Variablen abgeleitet wurde, kann er nicht mehr geändert werden.
-
Komplexer Boilerplate-Code kann durch Inferenz lokaler Variablentypen reduziert werden.
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
Beispiel
Das folgende Programm zeigt die Verwendung von Local Variable Type Inference in JAVA 10.
import java.util.List; public class Tester { public static void main(String[] args) { var names = List.of("Julie", "Robert", "Chris", "Joseph"); for (var name : names) { System.out.println(name); } System.out.println(""); for (var i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } } }
Ausgabe
Es wird die folgende Ausgabe ausgegeben.
Julie Robert Chris Joseph Julie Robert Chris Joseph
Java