我有两个变量:
final Long a;
if(...) {
a = ...;
} else
a = null;
String b = "A";
....
然后,分配给另一个Long
是抛出一个NullPointerException
:
final Long c = b.equals("B")? a*1000: a;
我期待c
是null
if a
is null
,并且我期待b
,我知道在这种情况下不会B
阻止它被取消引用。
那么它为什么会抛出NullPointerException
?
更新:谜团解开了,它在三元运算符中自动拆箱。见https://stackoverflow.com/a/13627200/15721