Las nuevas versiones de Java (desde la 11) nos traen muchos cambios que pueden volar la cabeza a más de un programador Java que sigue usando el JDK 8 o inferiores. Uno de estos cambios son las famosas variables "anónimas". Variables "anónimas"
package org.info; /** * *@author Comunidad City Java *@date 31/03/2021 * */ public class Main{ public static void main(String[] args){ testA(); } public static void testA(){ var entero = 32; var cadena = "Esta es una cadena en Java"; var flotante = 23.7f; var real = 45.3; var caracter = '\u9943'; var claveLarga = 12330000L; var booleano = 45 > 43; System.out.println("**** Tipos anonimos ****"); System.out.printf("Entero: %d \n",entero); System.out.println("Cadena: "+cadena); System.out.println("Caracter: "+caracter); System.out.println("Flotante: "+flotante); System.out.println("Double: "+real); System.out.println("Clave larga: "+claveLarga); if(booleano){ System.out.println("Hola, amigos!!"); } } }
Como se puede ver en el programa Main.java se puede observar que no definimos el tipo de las variables. Sin embargo, una vez que a la variable se le ha asignado un valor éste no podrá ser re asignado. Por lo que este fragmento de código causaría un error en tiempo de compilación.
entero = "Ahora soy una cadena"; System.out.println("Entero: "+entero);
También podemos hacer cosas como esto:
var lista = List.of(1,2,3,4,5,6); var obj = new Main(); if(obj instanceof Main){ System.out.println("Es de tipo Main"); } for(Integer e : lista){ System.out.println(e); }
Crear una lista "anónima" y un objeto "anónimo".
El programa compilará y se ejecutará sin problema alguno.
Otra de las nuevas características es crear una clase mediante la palabra record, la cual es tan solo un nuevo camino para crear un nuevo tipo.
package info; public class Main{ record Punto(int x, int y){} public static void main(String[] args){ // instanciamos la clase Punto var punto = new Punto(3,2); //Accedemos a sus atributos: x & y System.out.println(punto.x()); System.out.println(punto.y()); //el método toString() ya va integrado System.out.println(punto); } }
Enlaces:
https://www.adictosaltrabajo.com/2019/02/26/de-java-8-a-java-11-aun-no-te-has-migrado/
https://dev.to/jackcmeyer/what-s-new-in-java-15-record-44bl
https://medium.com/the-java-report/java-11-sneak-peek-local-variable-type-inference-var-extended-to-lambda-expression-parameters-e31e3338f1fe
Comentarios
Publicar un comentario