Java 10 - Inferencia de tipos de variables locales
JEP 286 − Inferencia de tipos de variables locales
La inferencia de tipo de variable local es uno de los cambios más evidentes en el lenguaje disponible desde Java 10 en adelante. Permite definir una variable usando var y sin especificar el tipo de la misma. El compilador infiere el tipo de la variable utilizando el valor proporcionado. Este tipo de inferencia está restringida a variables locales.
Forma antigua de declarar una variable local.
String name = "Welcome to tutorialspoint.com";
Nueva forma de declarar variables locales.
var name = "Welcome to tutorialspoint.com";
Ahora el compilador infiere el tipo de variable de nombre como Cadena al inspeccionar el valor proporcionado.
Puntos destacados
-
Sin inferencia de tipo en caso de variable miembro, parámetros de método, valores devueltos.
-
La variable local debe inicializarse en el momento de la declaración; de lo contrario, el compilador no se inferirá y arrojará un error.
-
La inferencia de variables locales está disponible dentro del bloque de inicialización de las sentencias de bucle.
-
Sin sobrecarga de tiempo de ejecución. Como el compilador infiere el tipo según el valor proporcionado, no hay pérdida de rendimiento.
-
Sin cambio de tipo dinámico. Una vez que se infiere el tipo de variable local, no se puede cambiar.
-
El código repetitivo complejo se puede reducir mediante la inferencia de tipos de variables locales.
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
Ejemplo
El siguiente programa muestra el uso de la inferencia de tipo de variable local en 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)); } } }
Salida
Imprimirá el siguiente resultado.
Julie Robert Chris Joseph Julie Robert Chris Joseph
Java