我99%确信这是由于条件运算符的行为引起的。我相信您的代码等同于:
double tmp = store != null ? store.getAvailablePieces() : 0.0;Double availablePieces = tmp;
换句话说,它会将的结果拆箱
store.getAvailablePieces()到
double,然后再装箱到
Double。如果
store.getAvailablePieces()返回
null,的确会导致死亡
NullPointerException。
解决方法是也使第三个 *** 作数
Double:
Double availablePieces = store != null ? store.getAvailablePieces() : Double.valueOf(0.0);
现在将没有装箱或拆箱,因此可以
store.getAvailablePieces()返回
null。然后
0.0,您可能想使用它,但这是另一回事。如果要这样做,可以更改为:
Double tmp = store != null ? store.getAvailablePieces() : null:double availablePieces = tmp == null ? 0.0 : tmp;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)