我是Java中自动装箱的忠实粉丝,因为它节省了许多难看的锅炉板代码。但是我发现自动拆箱在某些可能为null的情况下会引起混淆。有没有办法检测代码库中带有javac警告的自动拆箱位置?任何其他解决方案来检测仅出现拆箱(例如FindBugs或特定于Eclipse的编译器警告)将不胜感激,因为我找不到任何解决方案。
澄清我不希望在拳击时产生任何警告 - 仅取消装箱。
以下是一些可能导致混淆NullPointerExceptions的代码的简单示例:
class Test {
private Integer value;
public int getValue() {
return value;
}
}
答案 0 :(得分:5)
烨。在Eclipse中:
偏好设置 - > Java->编译器 - >错误/警告 - >潜在的编程问题 - >装箱和拆箱转换
答案 1 :(得分:2)
不幸的是没有。这是自动取消装箱号码的问题之一。你可以
private Integer value = 0
return value != null ? value : 0
我个人更喜欢第一种方法。一般来说,我认为你不会有太多你应该有空号的情况。
另外,为什么使用大整数来存储值。如果你只返回一点int,为什么不这样存储?
答案 2 :(得分:1)
Eclipse将允许您进行语法颜色装箱和拆箱操作(但不是一个或另一个)。我把它们设置为鲜红色:如果发生任何一种情况,这意味着我在匹配参数和参数方面一直很邋。
答案 3 :(得分:1)
我怀疑这是一个警告案例。这是自动拳击的怪癖之一。
Joshua Bloch在他的“Effective Java”一书中阐述了这一点。基本上,编译器正在尝试为您做更多的事情。换句话说,这种类型的问题通常与使用有关,因此很难“发现错误”,因为从语义上讲,错误就是不存在。