Java 10 - Inférence de type de variable locale
JEP 286 – Inférence de type de variable locale
L'inférence de type de variable locale est l'un des changements de langage les plus évidents disponibles à partir de Java 10. Il permet de définir une variable à l'aide de var et sans en préciser le type. Le compilateur déduit le type de la variable à l'aide de la valeur fournie. Cette inférence de type est limitée aux variables locales.
Ancienne façon de déclarer une variable locale.
String name = "Welcome to tutorialspoint.com";
Nouvelle façon de déclarer une variable locale.
var name = "Welcome to tutorialspoint.com";
Maintenant, le compilateur déduit le type de variable de nom en tant que chaîne en inspectant la valeur fournie.
Points remarquables
-
Aucune inférence de type en cas de variable membre, paramètres de méthode, valeurs de retour.
-
La variable locale doit être initialisée au moment de la déclaration, sinon le compilateur ne sera pas déduit et générera une erreur.
-
L'inférence de variable locale est disponible dans le bloc d'initialisation des instructions de boucle.
-
Aucune surcharge d'exécution. Comme le compilateur déduit le type en fonction de la valeur fournie, il n'y a aucune perte de performances.
-
Pas de changement de type dynamique. Une fois le type de variable locale déduit, il ne peut pas être modifié.
-
Le code passe-partout complexe peut être réduit à l'aide de l'inférence de type de variable locale.
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
Exemple
Le programme suivant montre l'utilisation de l'inférence de type de variable locale dans 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)); } } }
Sortie
Il imprimera la sortie suivante.
Julie Robert Chris Joseph Julie Robert Chris Joseph
Java