Что не так с этой нулевой проверкой? - PullRequest
0 голосов
/ 19 ноября 2010
List<Foo> results = null;
results = this.getResults();
if (results == null || results.size() == 0)
{
    LOGGER.warn("results empty");
}
else
{
    LOGGER.warn("results:" + results.toString());
}

Приведенный выше код всегда производит следующий вывод, когда getResults возвращает пустой список.

results:[null]

Мне нужно ответить на этот нулевой сценарий, но я не знаю, как его перехватить.

Ответы [ 3 ]

5 голосов
/ 19 ноября 2010

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

Я думаю, что нужно проверить, содержит ли список нулевое значение в 0-ом месте, если нет, то список содержит хотя бы одно ненулевое значение.

List<Foo> results = null;
results = this.getResults();
if (results == null || results.size() == 0) {
    LOGGER.warn("results empty");
} else if (list.get(0) == null){
    LOGGER.warn("the list has only an null value");
} else {
    LOGGER.warn("results:" + results.toString());
}

Или

List<Foo> results = null;
results = this.getResults();
if (results == null || results.size() == 0 || list.get(0) == null) {
    LOGGER.warn("results empty");
} else {
    LOGGER.warn("results:" + results.toString());
}
1 голос
/ 19 ноября 2010

Судя по вашему выводу, список, возвращаемый getResults(), имеет один нулевой элемент.

List<Foo> results = null;
results = this.getResults();
if (results == null || results.size() == 0) // you could add the check here
{
    LOGGER.warn("results empty");
}
else if(results.size() == 1 && results.get(0) == null) // Or a new else if here
{
    LOGGER.warn("all I've got is a null in my list :(");
}
else
{
    LOGGER.warn("results:" + results.toString());
}
0 голосов
/ 19 ноября 2010

Все правильно, что ваш список содержит одно нулевое значение.Однако я не понимаю, почему необходимо проверять, является ли первый элемент нулевым.Больше похоже на то, что вам нужно переосмыслить то, что происходит в getResults(), а , а не , положить нуль в списокЯ имею в виду, что у нас нет оснований полагать, что между реальными объектами не может быть больше нулей или нулей.

...