Я хочу выполнить какое-то действие ТОЛЬКО ЕСЛИ моя строка имеет значимое значение. Итак, я попробовал это.
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
}
И во всех случаях моя программа, doSomething
несмотря на то, что моя строка пуста. Это равно null
. Итак, что не так с этим?
ДОБАВЛЕНО:
Я нашел причину проблемы. Переменная была объявлена как строка и, как следствие, null
присвоена этой переменной была преобразована в "null"
! Итак, if (!myString.equals("null"))
работает.
System.out.println(myString)
непосредственно перед блоком if, чтобы вы могли увидеть, что там?
null
"?
null
присвоение этой переменной было преобразовано в "null"
- это ужасная идея. Попробуйте изменить этот дизайн, если это вообще возможно.
null
нет никаких методов, так что нетequals()
. Если бы выmyString
былиnull
, как бы вы вызвали метод для этого? :)