Eu quero realizar alguma ação SOMENTE SE a minha corda tiver um valor significativo. Então, eu tentei isto.
if (!myString.equals("")) {
doSomething
}
e isto
if (!myString.equals(null)) {
doSomething
}
e isto
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
e isto
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
e isto
if ( myString.length()>0) {
doSomething
}
E em todos os casos meu programa doSomething
apesar do fato de que minha string é VAZIA. É igual a nulo
. Então, o que há de errado com isso?
ADDED:
Eu encontrei a razão do problema. A variável foi declarada como uma string e, como consequência, nulo' atribuído a esta variável foi transformado em
"null"! Então,
if (!myString.equals("null"))` funciona.
if (myString != null && !myString.isEmpty()) {
// doSomething
}
Como comentário adicional, você deve estar ciente deste termo no contrato "igual":
Para qualquer valor de referência não-nulo
x
,x.equals(null)
deveretornar falso
.
A maneira de comparar com null
é utilizar x == null
e x != null
.
Além disso, x.field
e x.method()
joga NullPointerException
se x == nulo
.