Исключение Nullpointer
-
16-09-2019 - |
Вопрос
Существует вероятность, что это может быть дублирующий вопрос.Я инициализирую строковую переменную значением 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, которая проверила оба