Вопрос

Существует вероятность, что это может быть дублирующий вопрос.Я инициализирую строковую переменную значением null.Я могу или не могу обновить ее значением.Теперь я хочу проверить, не равна ли эта переменная null, и что бы я ни пытался, я получаю исключение с нулевым указателем.Я не могу позволить себе выбрасывать исключение nullpointer, поскольку это дорого.Есть ли какой-либо эффективный обходной путь.TIA

Это было полезно?

Решение

Если вы используете

if (x == null)

Вы будете нет получить NullPointerException.

Я подозреваю, что вы делаете:

if (x.y == null)

который бросает, потому что x является нулевым, не потому, что x.y нулевой.

Если это не объясняет этого, опубликуйте код, который вы используете для проверки недействительности.

Другие советы

Я думаю, вы делаете что-то вроде этого,

  String s = null;

  if (s.equals(null))

Вы либо проверяете значение null вот так

  if (s == null)

Лучший подход — игнорировать нулевое значение и просто проверять ожидаемое значение следующим образом:

  if ("Expected value".equals(s))

В этом случае результат всегда будет ложным, если s имеет значение null.

Строка неизменяема

@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
    String s = null;
    s.equals(null);
}

@Test
public void testStringEqualsNull2() {
    String s = null;
    TestCase.assertTrue(s == null);
}

Я сравниваю только s ==null

можете ли вы показать фрагмент кода, который вы написали s ==null никогда не выдаст NPE

если вы проверяете, является ли «s» нулевым, не применяйте точку (.) после «s».Это приведет к возникновению исключения NullPOinterException, поскольку применение точки (.) означает, что вы пытаетесь получить доступ к местоположению указателя, который в данный момент по сути равен нулю!

Также попробуйте использовать библиотечные функции, которые проверяют, является ли строка нулевой или пустой.вы можете использовать StringUtils.isEmpty(s) из библиотеки Apache, которая проверила оба

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top