Quiero realizar alguna acción SOLO SI mi cadena tiene un valor significativo. Por lo tanto, he intentado esto.
if (!myString.equals("")) {
doSomething
}
y esto
if (!myString.equals(null)) {
doSomething
}
y esto
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
y esto
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
y esto
if ( myString.length()>0) {
doSomething
}
Y en todos los casos mi programa haceAlgo
a pesar de que mi cadena ES VACIA. Es igual a null
. Entonces, ¿qué pasa con eso?
AGREGADO:
He encontrado la razón del problema. La variable fue declarada como una cadena y, como consecuencia, null
asignada a esta variable se transformó en "null"
. Así que, si (!miCadena.es igual a "null"))
funciona.
if (myString != null && !myString.isEmpty()) {
// doSomething
}
Como comentario adicional, deberías tener en cuenta este término en el contrato de "iguales":
De Object.equals(Object)
:
Para cualquier valor de referencia no nulo x
, x.equals(null)
debería devolver false
.
La forma de comparar con null
es utilizar x == null
y x != null
.
Además, x.field
y x.method()
lanzan una NullPointerException
si x == null
.