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