Atrás

Temas de Java

19 nov 2020

Autor: Ing. Rodrigo Andregnette

Imagen ampliada

Temas de Java

Java constantemente libera versiones nuevas, el objetivo de este artículo mensual es mostrarte las nuevas características y funcionalidades que agrega el lenguaje.

Inferencia de tipo de la variable local

Java 10

El siguiente ejemplo muestra la declaración de una variable local:

 

DatosUsuario datosUsuario= new DatosUsuario();

 

La declaración de una variable consta de tres partes, a la izquierda está la definición del tipo de dato, luego viene el nombre identificador y a la derecha del signo de igual el valor que se le asigna.

En este ejemplo particular se puede inferir que el objeto datosUsuario es del tipo DatosUsuario solo viendo el valor que se le asigna, ya que new DatosUsuario() devuelve únicamente un objeto del tipo DatosUsuario. Tomando esto en cuenta, ¿es realmente necesario especificar el tipo del objeto?.

Java 10 introduce una característica llamada inferencia de tipo de variable local, significa que en vez de explícitamente declarar el tipo de la variable, se puede utilizar la palabra reservada var y Java infiere el tipo de la variable tomando como referencia lo que se le asigna.

El ejemplo anterior quedaría entonces de la siguiente forma:

 

var datosUsuario= new DatosUsuario();

 

Esto no convierte a Java en un lenguaje de tipo dinámico como JavaScript o Python. El tipo de la variable u objeto sigue estando ahí, solo que es inferido de lo que está a la derecha de la declaración. Solo se puede usar "var" si se inicializa la variable, de otra forma no podrá inferir el tipo.

El siguiente ejemplo da como resultado error de compilación:

 

var datosUsuario;

 

Variables globales

No se puede inferir el tipo de variables globales, como el nombre lo dice solo funciona con variables locales.

 

Importancia del nombre

Trabajando con inferencia de tipo es importante la prolijidad de los nombres, mientras más parecido sea el nombre de la variable al nombre del tipo más fácil será identificarla. Esto es indiferente a nivel Java ya que puede inferir el tipo sin importar el nombre que tenga, lo que se busca con esto es que el código no sea entreverado a la hora de leerlo.

 

Cuidado con los casos que pueden generar ambigüedad

¿La siguiente declaración que tipo infiere?

 

var listaString= new ArrayList();

 

Si tu respuesta fue ArrayList u Object entonces es correcta. Esto podría estar bien en algunos casos, pero si se quiere usar los métodos de algún elemento de la lista, va a quedar limitado a los de la clase Object.

Para que la inferencia sea más específica hay que usar la mayor información posible en el lado derecho de la declaración. Por ejemplo, usar operador para especificar que la lista es de String.

 

var listaString= new ArrayList<String>();

 

Conclusión

Inferencia de tipo de variable local es una característica útil de Java 10. Presenta la posibilidad de tener un código más acotado sin tener que escribir el tipo de cada variable local. Si no se mantiene prolijidad con los nombres de las variables puede llegar a ser un dolor de cabeza para futuros lectores del código, de otra forma es una excelente herramienta.


Newsletter Newsletter

Suscríbase a nuestro Newsletter para recibir el contenido directo en su bandeja de correo.

Este campo es obligatorio.
Este campo es obligatorio.

Enlaces de interés

Últimas noticias
Proyectos