Можем ли мы полагаться на String.isEmpty для проверки нулевого условия в строке в Java? - PullRequest
43 голосов
/ 23 января 2012

Я передаю учетную запись в качестве ввода из XML-файла, как показано, который будет проанализирован позже и будет использован в нашем коде:

<accountid>123456</accountid>
<user>pavan</user>

Проблема заключается в том, что если ничего не передается (нулевое значениев accoutnid) передается как accountid, я не смог справиться с этой ситуацией в коде Java.Я попробовал это, но у меня ничего не вышло:

if (acct != null||acct==""||acct.equals("")) 
{
    // the above is not working 
}

Я смог успешно справиться с этим, используя следующий подход:

if(!acct.isEmpty())
{
   // thisis working 
}

Можем ли мы положиться на String.isEmpty()метод проверки нулевого условия String?Это действительно?

Ответы [ 5 ]

109 голосов
/ 23 января 2012

Нет, абсолютно нет - потому что если acct равно нулю, оно не будет даже получать до isEmpty ... оно немедленно выдаст NullPointerException.

Ваш тест должен быть:

if (acct != null && !acct.isEmpty())

Обратите внимание на использование && здесь, а не || в предыдущем коде;также обратите внимание, что в вашем предыдущем коде ваши условия все равно были неправильными - даже с && вы бы ввели if тело, только если acct было бы пустой строкой.

Также можно использовать Гуава :

if (!Strings.isNullOrEmpty(acct))
18 голосов
/ 04 февраля 2016

Вместо этого используйте StringUtils.isEmpty, он также проверит на нулевое значение.

Примеры:

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true
 StringUtils.isEmpty(" ")       = false
 StringUtils.isEmpty("bob")     = false
 StringUtils.isEmpty("  bob  ") = false

Подробнее о официальной документации по строковым утилитам .

6 голосов
/ 23 января 2012

Вы не можете использовать String.isEmpty(), если оно пустое. Лучше всего иметь свой собственный метод, чтобы проверить ноль или пустой.

public static boolean isBlankOrNull(String str) {
    return (str == null || "".equals(str.trim()));
}
1 голос
/ 16 апреля 2017

Нет, метод String.isEmpty() выглядит следующим образом:

public boolean isEmpty() {
    return this.value.length == 0;
}

, поскольку вы можете видеть, что он проверяет длину строки, поэтому вам обязательно нужно проверить, является ли строка нулевой.

1 голос
/ 26 июля 2015
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 - это не то же самое, что пустой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...