Java 10 - Inferentie van het lokale variabele type
JEP 286 − Inferentie type lokale variabele
Inferentie van het lokale variabele type is een van de meest duidelijke taalveranderingen die beschikbaar zijn vanaf Java 10. Het maakt het mogelijk om een variabele te definiëren met var en zonder het type ervan op te geven. De compiler leidt het type van de variabele af met behulp van de opgegeven waarde. Dit type gevolgtrekking is beperkt tot lokale variabelen.
Oude manier om lokale variabele te declareren.
String name = "Welcome to tutorialspoint.com";
Nieuwe manier om lokale variabele te declareren.
var name = "Welcome to tutorialspoint.com";
Nu leidt de compiler het type naamvariabele af als String door de opgegeven waarde te inspecteren.
Opmerkelijke punten
-
Geen type-inferentie in het geval van lidvariabele, methodeparameters, retourwaarden.
-
Lokale variabele moet worden geïnitialiseerd op het moment van declaratie, anders wordt de compiler niet afgeleid en wordt er een fout gegenereerd.
-
Inferentie van lokale variabelen is beschikbaar in het initialisatieblok van lusinstructies.
-
Geen runtime-overhead. Aangezien de compiler het type afleidt op basis van de opgegeven waarde, is er geen prestatieverlies.
-
Geen dynamische typeverandering. Als het type lokale variabele eenmaal is afgeleid, kan het niet meer worden gewijzigd.
-
Complexe standaardtekstcode kan worden gereduceerd met behulp van lokale variabele type-inferentie.
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
Voorbeeld
Het volgende programma toont het gebruik van lokale variabele type-inferentie 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)); } } }
Uitvoer
Het zal de volgende uitvoer afdrukken.
Julie Robert Chris Joseph Julie Robert Chris Joseph
Java