Ingresar:

programacion java :: Blog :: variables no declaradas

February 03, 2007

Otra de las novedades que se prepara para Java 7 es que vas a poder usar variables sin necesidad de declararlas. Por ejemplo (sacado de este post)

// print a frequency table of words   public static void main(String[] args) {   map:=new HashMap<String,Integer>();   for(word:args) {      freq:=map.get(word);      map.put(word,(freq==null)?1:freq+1);   }   System.out.println(map); }  

La variable map no está definida y el := no es java "normal", que en realidad es una propuesta de notación para variables no declaradas. Esta propuesta se discute junto a otra en el post anteriormente mencionado.

Hay que hacer notar que las variables map, words, freq no son como en PHP que tienen el tipo denominado dinámico, es decir que la misma variable puede tomar valores de tipos distintos durante la ejecución del programa. El lenguaje sigue siendo fuertemente tipado, solo que no se necesita avisar el tipo de la variable en el programa. El tipo se deduce a partir del contexto donde aparece. El tipo de map es fácil, porque aparece en la creación del objeto que referencia map: HashMap<String,Integer>. El tipo de word también es fácil de inferir: el for es sobre args que es un arreglo de String, como es un for each, word referencia a los elementos del arreglo, por tanto su tipo es String. Estas reglas se pueden poner en el compilador para que en tiempo de compilación el tipo de todas las variables se deduzca a partir de las expresiones. Todos los tipos deben ser consistentes. La consistencia del tipo de word se puede probar en la expresión map.put(word,...). El tipo de put es

  V put(K key, V value)   

como K está instanciado con el tipo String y V con el tipo Integer, entonces en realidad es:

  Integer put(String key, Integer value)   

El tipo de key y el de word son el mismo, por tanto hay consistencia. Puedes intentar deducir el tipo de freq a partir de las expresiones para ejercitar.

Es más práctico no tener que llenar de declaraciones de tipos los programas si realmente sabes lo que estás haciendo.

Puedes probar estos nuevos sabores de java en los prototipos que se muestran en el post anteriormente mencionado. 

Enviado por Pablo Azero @ programacion java


Debes iniciar sesión para enviar un comentario.