java - 这段 Java 代码如何编译无误?

标签 java compiler-errors compilation javac

有人可以解释为什么这段 Java 代码可以编译吗?

public class Main {
     public static void main(String []args){
        System.out.println(foo(true));
        System.out.println(foo(false));
     }

     public static boolean foo(boolean value) {
         // this should make the compiler say something, at least complain a bit...
         return value ? true : null;
     }
}

最佳答案

正如 Oliver 在评论中所说,这个编译的原因是自动装箱。

null 可以自动装箱为 Boolean,可以自动拆箱为 boolean,让编译器满意。在运行时,自动装箱有效,但当它被拆箱为 boolean 时,它将抛出 NullPointerException

关于java - 这段 Java 代码如何编译无误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43073089/

相关文章:

compilation -/usr/lib/libgmodule-2.0.so : could not read symbols: File in wrong format

java - dalvik 似乎没有增加堆

java - 使用 JTidy 从 html 中删除所需的标签

c - 如何将单词插入简单的哈希函数 C

c++ - lang中的模板函数错误但不是gcc

java - 尝试编译测试Javafx应用程序时出错

database - Oracle数据库软件包的编译历史和错误记录

java - 删除 JComboBox 中的所有项目,并且当组合框为空时不触发事件

java - Spring @valid 不起作用

java - "Variable Might not have bee initialized."声明的数组变量发生错误