Я хочу виконати якусь дію ТІЛЬКО, якщо мій рядок має значення. Отже, я спробував це.
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
, як ви коли-небудь посилаєтесь на метод? :)