这会产生空指针:
boolean treatNullAsFalse = false;
String what = null;
System.out.println(what == null ? (treatNullAsFalse ? false : null) : what.equals("1")); // NULL POINTER
这不是。
boolean treatNullAsFalse = false;
String what = null;
System.out.println(what == null ? (treatNullAsFalse ? false : null) : (Boolean)what.equals("1"));
任何帮助,为什么(布尔)演员修复了这个问题?我认为三元运算符在编译时会找出返回类型,但是这里有一些拆箱正在生成NPE。