16 noviembre 2006

Curiosidades de java

No hace mucho, viendo código java por internet, me encontré con una expresión como esta:

if ( "".equals(variableString) )
...

Lo primero me llamó la atención lo curioso de ella. Se puede poner una cadena entre comillas... y llamar a métodos de la clase String con ella.

Luego, puestos a mirar el porqué se hace esa curiosa llamada cuando la forma aparentemente habitual es esta otra

if ( variableString.equals("") )
...

se me ocurrió el posible motivo. Muchas veces esa variableString nos viene como parámetro de un método o vete tú a saber de dónde, por lo que puede ser null. La llamada a equals() dará una excepción en ese caso. Para evitarlo, el if se hace más complejo

if ( (variableString != null) && (variableString.equals("")) )
...

debiendo, además, fiarnos de que el compilador va a ser listo y cuando comprueba que la primera condición no se cumple no se molesta en comprobar la segunda. Normalmente el compilador es listo y lo hace así. De todas formas, para no tener que fiarse, el if todavía es más peor

if (variableString != null)
if (variableString.equals(""))
...

Sin embargo, haciéndolo con el "".equals(variableString), se evita esa comprobación adicional de que no sea null y esa confianza ciega en el compilador.

2 comentarios:

Anónimo dijo...

Te recomiendo que leas. Effective Java Programming Language Guide. Es solo un consejo. :D

chuidiang dijo...

Tienes razón, esto de ponerse a programar a lo loco, sin leer libros de java, no puede llevar a nada bueno. ;-)

Se bueno.