Можем ли мы полагаться на String.isEmpty для проверки нулевого условия на String в Java?
Я передаю учетную запись как входной файл из XML файла, как показано, который будет проанализирован позже и будет использоваться в нашем коде:
<accountid>123456</accountid>
<user>pavan</user>
Проблема в том, что если ничего не передано (значение null в accoutnid) передается как accountid, я не смог бы обработать эту ситуацию в Java-коде. Я пробовал это, но я не добился успеха:
if (acct != null||acct==""||acct.equals(""))
{
// the above is not working
}
Мне удалось успешно справиться с этим, используя следующий подход:
if(!acct.isEmpty())
{
// thisis working
}
Можно ли полагаться на метод String.isEmpty()
для проверки нулевого состояния a String
? Это действительно?
Ответы
Ответ 1
Нет, абсолютно нет - потому что если acct
равно null, он даже не попадет в isEmpty
... он сразу же выбросит NullPointerException
.
Ваш тест должен быть:
if (acct != null && !acct.isEmpty())
Обратите внимание на использование &&
здесь, а не на ||
в предыдущем коде; также обратите внимание, как в вашем предыдущем коде ваши условия были в любом случае неправильными - даже с &&
вы бы ввели тело if
, если acct
была пустой строкой.
В качестве альтернативы, используя Guava:
if (!Strings.isNullOrEmpty(acct))
Ответ 2
Используйте StringUtils.isEmpty
вместо этого, он также проверит значение null.
Примеры:
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
Подробнее о официальной документации по String Utils.
Ответ 3
Вы не можете использовать String.isEmpty()
, если оно равно null. Лучше всего иметь свой собственный метод для проверки нулевого или пустого.
public static boolean isBlankOrNull(String str) {
return (str == null || "".equals(str.trim()));
}
Ответ 4
Нет, метод String.isEmpty()
выглядит следующим образом:
public boolean isEmpty() {
return this.value.length == 0;
}
как вы можете видеть, он проверяет длину строки
поэтому вам определенно нужно проверить, была ли строка пустой.
Ответ 5
String s1=""; // empty string assigned to s1 , s1 has length 0, it holds a value of no length string
String s2=null; // absolutely nothing, it holds no value, you are not assigning any value to s2
поэтому значение null не совпадает с пустым.
надеюсь, что это поможет!!!