我剛剛注意到的好奇心,而不是問題。作爲三元運算符編譯的結果,爲什麼返回null(其中布爾值是預期的)?
我不能寫
public boolean x() {
return null;
}
或本:
public boolean x() {
if (DEBUG) {
return true;
} else {
return null;
}
}
但我可以寫
public boolean x() {
return DEBUG ? true : null;
}
這是爲什麼? (看來,如果「其他」分支走向拋出NPE)。
謝謝@Thilo。澄清:問題是,爲什麼三元構造不像其他兩個例子一樣被拒絕? –
@MichaelKay再一次,只是出於好奇心,你是否嘗試過'public boolean x(){if(DEBUG){ return true; } return null; }'? –
可能dupplicate http://stackoverflow.com/questions/978324/java-ternary-immediate-if-evaluation? java8中的 – Jens