我的NPE的Stacktrace开始于:
Caused by: java.lang.NullPointerException
at pl.yourvision.crm.web.servlets.listExport.ProductListExport.writeCells(ProductListExport.java:141)
Run Code Online (Sandbox Code Playgroud)
此文件中的第141行是:
Double availablePieces = store != null ? store.getAvailablePieces() : 0.0;
Run Code Online (Sandbox Code Playgroud)
store不为null且store.getAvailablePieces()为null.我不明白为什么我在这里得到例外.
有任何想法吗?
Jon*_*eet 19
我99%肯定这是因为条件运算符的行为.我相信你的代码相当于:
double tmp = store != null ? store.getAvailablePieces() : 0.0;
Double availablePieces = tmp;
Run Code Online (Sandbox Code Playgroud)
换句话说,它是拆箱的结果store.getAvailablePieces()为double,然后拳击回Double.如果store.getAvailablePieces()返回null,那确实会导致NullPointerException.
解决方法是创建第三个操作数Double:
Double availablePieces = store != null ? store.getAvailablePieces()
: Double.valueOf(0.0);
Run Code Online (Sandbox Code Playgroud)
现在不会有任何拳击或拆箱,所以store.getAvailablePieces()返回是没关系的null.您可能希望使用0.0,但这是另一回事.如果你打算这样做,你可以改为:
Double tmp = store != null ? store.getAvailablePieces() : null:
double availablePieces = tmp == null ? 0.0 : tmp;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |