En una entrevista que le han hecho a Joshua Bloch en java.sun le han preguntado qué era para él la cosa más rara de la plataforma Java. Su respuesta ha sido un poco sorprendente: que el tipo byte tiene signo. Según él, esto es bastante anti intuitivo y puede causar muchos errores.
En uno de los comentarios del post en TSS se apunta otro hecho que, al menos a mí, me ha resultado más interesante: el tipo char es el único tipo sin signo de Java, lo cual puede dar lugar a resultados bastante poco intuitivos:
byte b = -1;
System.out.println(b);
System.out.println((int) b);
System.out.println((int) (char) b);
Produce la salida:
-1
-1
65535
Si me preguntais a mí, una de las cosas que más me choca son algunas decisiones que se han realizado en el lenguaje respecto al uso de las excepciones en algunas librerías. Por ejemplo, nunca he entendido que el método close de File lance una excepción. Y, en general, me parece que se abusa bastante de las excepciones cheked en todo el paquete java.io y java.net. Para tres líneas de código real que quiero escribir abajo menudo bloque de código acaba quedando por culpa de las excepciones...
File f = new File ("...");
try {
FileReader fileReader = new FileReader(f);
try {
fileReader.read();
} catch (IOException ex1) {
try {
fileReader.close();
} catch (IOException ex2) {
//¿y aqui qué demonios hago?
//¿vuelva probar fileReader.close();?
}
}
} catch (FileNotFoundException ex) {
...
}
¿Cual es la cosa más rara de Java para vosotros?