9
どうすればjavac
はこのコードでエラーを発しませんか?JavaがNPEを許可するのはなぜですか
private static int compute(int v) {
return v == 0 ? null : v;
}
確かに、compute(0)
はNullPointerException
をスローします。私はそれがなぜJavaがNPEを許可しない
private static int compute(int v) {
if (v == 0)
return null;
else
return v;
}
わかりました。 'v == 0? null:v'はInteger型を誘導し、コンパイラを欺く。私はまだそれがばかだと思う。 – milan
これは、三元演算子を使用することは、一般に、一部の人々にとって悪い習慣とみなされる理由の1つです。新しいJava開発者の多くはそれを見て、実際には冗長性を減らす機会だと考えています。これはバグを見つけにくい素晴らしい方法です。 – CheeseFerret