これは、Java 純粋主義者向けだと思います。最近、文字列値からブール値へのカスタム解析を実行する方法に問題がありました。単純なタスクですが、何らかの理由で、以下のメソッドが null の場合に NullPointerException をスローしていました...
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
メソッドの戻り値の型はブール値ですが、なぜ、またはどのように NullPointerException がスローされるのでしょうか? デバッグから、ネストされたインライン条件文がnullに評価され、外側のインライン条件文にnullを返すポイントで例外がスローされているようですが、理由は説明できません。
最終的に私はあきらめて、次のようにメソッドを書き直しました。これは期待どおりに機能します。
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
次のコードは 2 つの中間であり、期待どおりに動作します。
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}