Este artículo describe lo que el autor considera que son los cinco errores más comunes que los programadores Java cometen. El primero consiste en creer que estamos sobreescribiendo un método cuando realmente no lo estamos haciendo como por ejemplo:
public class MyWindowListener extends WindowAdapter { public void WindowDeactivate(WindowEvent e) { System.exit(0); } });
Un problema que se soluciona fácilmente en la actualidad empleando @Override. El siguiente es confundir paso por valor y paso por referencia, algo muy común en los programadores novatos que se creen que, por ejemplo, al pasar un objeto a un método y modificarlo dentro, pensando que el objeto que habían pasado inicialmente "no se va a modificar porque el método trabaja con una copia del original".
El tercero error de la lista es dejar vacíos los bloques catch. El siguiente error es el típico de confundir creer que "==" sirve para comparar por igualdad (equals ()), y no por identidad. Aunque en esencia lo que dice el artículo original es cierto, su ejemplo no lo es:
String string1 == “string1”; String string2 == “string1”; boolean iguales = string1 ==string2;
Después de ejecutar este código, al menos en cualquier máquina virtual moderna que yo conozco, iguales vale "true", aunque "no por el motivo adecuado" ;). El último error son lo que él llama errores de capitalización, usar mayúsculas cuando no se deben usar o viceversa. Este, francamente, no lo entiendo. El compilador suele avisar de un error de esta naturaleza, a no ser que estemos hablando de temas como creer que estamos sobreescribiendo un método cuando no lo estamos haciendo.
Yo a esta lista añadiría el creer que los objetos "File" son ficheros que están en el disco duro, y no meramente rutas en un sistema de ficheros, y escribir código del tipo:
File file = new File("path aqui"); // Si el fichero no existe if(file==null) { ... }
O el invocar métodos que devuelven algo sobre objetos inmutables, pensando que el objeto inmutable va a cambiar:
String text0 = "HOLA"; texto.toLowerCase();
¿Cuales son otros errores comunes de programación en Java según vuestra experiencia?