【发布时间】:2011-12-15 02:41:57
【问题描述】:
为什么下面这行代码会产生NullPointerException?
Long v = 1 == 2 ? Long.MAX_VALUE : (Long) null;
我知道正在对 null 执行拆箱,但为什么呢?
注意
Long v = (Long) null;
不产生异常。
【问题讨论】:
-
你做了一个 v=((1==2)?Long.MAX_VALUE : (Long) null);这总是错误的,所以你总是尝试将 null 转换为 Long。这似乎是不允许的,会抛出你的异常。
-
为什么会有这样一行代码?求知欲还是来自实际生产代码的 sn-p?
-
@Paul 和 evildead,看起来像是演示拆箱顺序的示例代码。
-
相关:stackoverflow.com/questions/3882095/… 解决方案是将演员表移动到您的
Long.MAX_VALUE,因为它会返回long。