您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java 布尔值,条件运算符和自动装箱

Java 布尔值,条件运算符和自动装箱

别在于方法的显式类型returnsNull()会在编译时影响表达式的静态类型:

E1: `true ? returnsNull() : false` - boolean (auto-un@R_507_2419@ing 2nd operand to boolean)

E2: `true ? null : false` - Boolean (auto@R_507_2419@ing of 3rd operand to Boolean)

参见Java语言规范,第15.25节“ 条件运算符?”。:

如果第二个操作数和第三个操作数之一为布尔型,而另一个的类型为布尔型,则条件表达式的类型为布尔型。

由于表达式的类型为boolean,因此第二个操作数必须强制为boolean。编译器将自动拆箱代码插入第二个操作数(返回值returnsNull())以使其为type boolean。这当然会导致null在运行时从返回的NPE 。

否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的结果。

java 2022/1/1 18:16:40 有447人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶