Это одно для пуристов java, я думаю. Недавно у меня возникла проблема с методом для выполнения пользовательского синтаксического анализа значений String в Boolean. Достаточно простая задача, но по каким-то причинам ниже метод был бросать NullPointerException в нулевом случае ...NullPointerException from Boolean
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
Возвращаемый тип метода Boolean так, почему и как может NullPointerException быть выброшен? От отладки через это кажется, что исключение выбрасывается в том месте, где вложенный условный оператор в строке вычисляет значение null и возвращает значение null во внешнюю строку в строке, но опять-таки я не могу объяснить, почему.
В конце концов я сдался и переписал метод следующим образом, который работает, как ожидалось:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
Следующий код на полпути между двумя, а также работает, как ожидалось:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}
+1 для приятного «головоломки» – NilsH
@NilsH спасибо за +1 и за решение! – Robin