9
javac
爲什麼不會在這段代碼上發出錯誤?爲什麼java允許NPE
private static int compute(int v) {
return v == 0 ? null : v;
}
當然,compute(0)
會丟NullPointerException
。我希望Java編譯器,以防止這種情況做一些基本的靜態代碼分析,就像它會阻止
private static int compute(int v) {
if (v == 0)
return null;
else
return v;
}
哦,我明白了。 'v == 0? null:v'誘導Integer類型,它會欺騙編譯器。我仍然認爲這很愚蠢。 – milan
這是爲什麼使用三元運算符通常被一些人認爲是不好的做法的一個原因。許多新開發的Java開發人員都認爲它是一種減少實際冗餘的機會,這是一種很難找到漏洞的好方法。 – CheeseFerret