Contenido de certificación
Buscar
Social
Ofertas laborales ES
« Pregunta sobre excepciones | Main | Pregunta sobre switch »
lunes
abr152013

Más sobre Java 7

Básicamente, las novedades de Java 7 son las siguientes:

(fuente Java México)

Desde mi punto de vista, es una toma de contacto de Oracle en el proceso de Java (yo lo veo como un "calentar motores"), porque los cambios son muy reducidos... y de poco impacto.

Veámoslos...

  • Switch con Strings (comentando en el post anterior)

 

 String color="black";
 switch(color){
        case "black": System.out.println("#000000");
                             break;
        case "white": System.out.println("#FFFFFF");
                             break;
        case "red":    System.out.println("#FF0000");
                             break;
        default:          System.out.println("Unknown");
}

 

  • Inferencia de tipos u operador diamante para simplificar el uso de generics.

List<String> list=new ArrayList<>();

Map<String, Object> map=new HashMap<>();


 

  • Número en literales binarios (ya existía para hexadecimales, octales y decimales)

 

System.out.println("numero "+ 0b1010);
System.out.println("numero2: "+0b10100);

 

 

  • Números con guiones (para no perdernos en la cuenta de los dígitos al escribir los programas).

 

System.out.printf("number: %d%n",1_000_00);

 

 

  • Multicatch. En lo particular lo considero muy útil para evitar código duplicado de manejo de errores.

 

try{
      System.out.println(10/Integer.parseInt("0"));
}catch(ArithmeticException | NumberFormatException ex){
           //manejar excepción
}


 

  • Manejo automático de recursos o try con recursos para aquellos que luego olvidamos cerrar archivos, conexiones a bases de datos, result sets, statements. Yo creo que más de uno ha tenido que supervisar que el código propio o ajeno no deje recursos abiertos.

try(BufferedWriter writer=new BufferedWriter(new FileWriter("c:\\temp\\archivoTemporal.txt"))){
       writer.write("Hola, mundo!");
       writer.newLine();
       writer.write("Hola, mundo2!");
}catch(IOException ex){
       ex.printStackTrace();
}

 

¿Qué opináis de estos cambios?

Un saludo,

   Jaime.

Reader Comments (6)

En serio? Novedades de Java 7? Pero si hace un año que se liberó!

abril 16, 2013 | Registered Commentergolthiryus

Hola, entiendo lo que comentas...

Quería decir, novedades de Java 7 con respecto a Java 6.
Somos conscientes de que se liberó hace tiempo.
Creí conveniente comentarlo a modo de introducción de futuras preguntas relacionadas con la certificación que se publicarán en esta sección.
Un saludo,

abril 18, 2013 | Registered Commenterjcarmonaloeches

El multicatch es algo que llevaba anhelando desde hace tiempo. Cuántas veces habré repetido el mismo código en varios catch de un mismo try.

abril 19, 2013 | Registered Commenteradeteran

Previamente, lo que hacía era unificar excepciones en la misma línea de código:

esto es:
Si C y B heredaban de A, y C y B compartían la misma gestión... entonces, hacía:
try{
}catch (Excepcion A){
código común
}

Además, se cuenta con la ventaja de e.printstacktrace(), lo que permite que, en tiempo de ejecución, aunque sean dos tipos de excepciones diferentes, se pueda imprimir la información difererenciada en tiempo de ejecución.

Como he comentado previamente, personalmente los cambios con respecto a Java 7 me parecen un posicionamiento de la nueva manera de funcionar de Oracle, como una toma de medida al respecto, porque son cambios sin mucho impacto a mí parecer.

Un saludo,

mayo 5, 2013 | Registered Commenterjcarmonaloeches

Ya se que es 'viejo' este post, pero sólo comentar que lo del try catch para los recursos no es una cuestión de no olvidarse de cerrarlos sino que viene a resolver el problema de doble exception.
Cuando uno tenía un código como:


public void miMetodoQueLanzaMiException() throws MiException {
try {
InputStream is = abrirIS();
metodoQueLanzaException();
.....
} catch (Exception e) {
throw new MiException(e);
} finally {
is.close();
}
}

Si el is.close() lanza una exception se produce un ocultamiento de MiException (se pierde)
Es por eso que Apache tiene un IOUtils que tiene un closeQuietly.......

julio 5, 2013 | Unregistered Commenterdiego

Bien dicho Diego

junio 23, 2014 | Registered Commenterjcarmonaloeches

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>