Подтвердить что ты не робот

Можем ли мы полагаться на 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? Это действительно?

4b9b3361

Ответ 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 не совпадает с пустым.

надеюсь, что это поможет!!!