【发布时间】:2017-03-28 15:01:36
【问题描述】:
谁能解释为什么这段 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;
}
}
【问题讨论】:
-
自动装箱.....
-
您浏览过 JLS 吗?你认为它违反了哪条规则?这看起来像是被docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.25覆盖了
-
@OliverCharlesworth 但是为什么当顺序颠倒时它不能编译?
-
@milin - 但它确实可以编译:/
-
@JonSkeet 当第二个操作数为“布尔”且第三个为“null”时,我无法找到任何规则,但我不确定是否构成“没有规则被破坏”,而是我有一种被忽视的感觉......
标签: java compiler-errors compilation javac