我一直以为Java中的原始类型不可能null,因为如果我尝试这样做,这是一个编译时错误:
int test = null;
Run Code Online (Sandbox Code Playgroud)
但是在三元操作中,似乎允许:
int test = something != 0 ? 5 : null;
Run Code Online (Sandbox Code Playgroud)
不是三元操作(在这种情况下):
int test;
if (something != 0){
test = 5;
} else {
test = null
}
Run Code Online (Sandbox Code Playgroud)
这当然不应该被允许.如果该条件失败,它将自动抛出一个NullPointerException由于自动装箱.那么为什么java编译器不会像这样获取废话呢?