如何避免Java中算术运算符的NullPointerException?

Ste*_*ers 4 java null operators nullpointerexception

鉴于以下内容:

Integer var1 = null;
Integer var2 = 4;
Integer result = var1 + var2; // throws NullPointerException
Run Code Online (Sandbox Code Playgroud)

result应该是null每个操作数都是null(并且同样适用于其他操作符).我知道我可以使用if声明来做到这一点但是有更聪明的方法吗?

Nar*_*hai 9

最好的方法是不要使用 Boxed类型进行常规算术运算.改为使用原始类型.

只有当你在某个地方的馆藏中使用它们时,你才应该使用盒装类型.

编辑:

结合@Ingo的建议,Optional在Guava中有一个很好的实用程序类,它解释了如何避免空值.

现在使用这个类可以明确表示该值null.

  • 在这种情况下,您应该明确,如类Optional <Price>.然后你不能无意中添加一个不存在的价格. (2认同)

sta*_*lar 5

Integer var1 = null;
Integer var2 = 4;
Integer result = (var1 == null || var2 == null) ? null : var1 + var2; // returns null if either argument is null
Run Code Online (Sandbox Code Playgroud)