Jeg ønsker at udføre en handling KUN HVIS min streng har en meningsfuld værdi. Så jeg prøvede dette.
if (!myString.equals("")) {
doSomething
}
og dette
if (!myString.equals(null)) {
doSomething
}
og dette
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
og dette
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
og dette
if ( myString.length()>0) {
doSomething
}
Og i alle tilfælde mit program gør noget
på trods af, at min streng er tømt. Den er lig med null
. Så hvad er der galt med det?
ADDED:
Jeg har fundet årsagen til problemet. Variablen blev erklæret som en streng, og som følge heraf blev null
, der blev tildelt denne variabel, omdannet til "null"
! Så if (!myString.equals("null"))
virker.
if (myString != null && !myString.isEmpty()) {
// doSomething
}
Som en yderligere kommentar bør du være opmærksom på dette udtryk i equals
-kontrakten:
Fra Object.equals(Object)
:
For enhver referenceværdi x
, der ikke er nul, skal x.equals(null)
give retur false
.
Måden at sammenligne med null
på er at bruge x == null
og x != null
.
Desuden kaster x.field
og x.method()
`NullPointerException
, hvis x == null
.