Искам да извърша някакво действие САМО АКО низът ми има смислена стойност. Затова опитах това.
if (!myString.equals("")) {
doSomething
}
и това
if (!myString.equals(null)) {
doSomething
}
и това
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
и това
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
и това
if ( myString.length()>0) {
doSomething
}
И във всички случаи моята програма прави нещо въпреки факта, че низът ми е празен. Той е равен на null
. И така, какво не е наред с това?
ДОБАВЕНА:
Открих причината за проблема. Променливата беше декларирана като низ и в резултат на това null
, присвоено на тази променлива, беше трансформирано в "null"
! Така че if (!myString.equals("null"))
работи.
if (myString != null && !myString.isEmpty()) {
// doSomething
}
Като допълнителен коментар, трябва да сте наясно с този термин в договора equals
:
От Object.equals(Object)
:
За всяка референтна стойност x
, която не е нула, x.equals(null)
трябва да връща false`.
Начинът за сравняване с null
е да се използват x == null
и x != null
.
Освен това x.field
и x.method()
хвърлят NullPointerException
, ако x == null
.
Трябва да проверите дали обектът myString
е null
:
if (myString != null) {
doSomething
}