摆脱NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE?

时间:2014-05-19 20:11:54

标签: java guava findbugs

我在此代码段中获得NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

final Integer id = Ints.tryParse(idString);
FailReason.NO_SUCH_THING.checkCondition(id!=null);
something.setId(id.intValue());

在这里,checkCondition就像Preconditions.checkArgument一样,除了它抛出我自己的异常。在这里投掷NPE或IAE是不合适的,因为它检查外部输入而不是编程错误。

FindBugs抱怨"方法的返回值在没有空检查的情况下被解引用,并且该方法的返回值通常应该检查为null。执行代码时,这可能会导致NullPointerException。"

当论证为checkCondition时,我可以教会false永远不会正常返回的FindBug吗?

2 个答案:

答案 0 :(得分:2)

我(有点)通过添加

来解决它
assert id!=null;

这是多余而丑陋的,但仍然不如@SuppressFBWarnings和更本地的丑陋。

答案 1 :(得分:1)

尝试使用java.util.Objects.requireNonNull取悦FindBugs:

final Integer id = Ints.tryParse(idString); FailReason.NO_SUCH_THING.checkCondition(id!=null); something.setId(Objects.requireNonNull(id).intValue());

或者您可以使用java.util.Objects.isNull来欺骗FindBugs。

final Integer id = Ints.tryParse(idString); FailReason.NO_SUCH_THING.checkCondition(!Objects.isNull(id)); something.setId(id.intValue());