避免函数返回对象空检查

时间:2020-07-30 14:13:01

标签: java nullpointerexception

有什么方法可以避免对Java中的函数返回的对象进行空检查,例如在Lombok项目中使用的@NonNull批注,该批注可以在方法或构造函数的参数上使用。

是否有更好的做法来进行此检查...

    User user = service.findOne(id);
    if (user != null)
        return user;
    throw new UserNotFoundException("Invalid ID - "+ id);

1 个答案:

答案 0 :(得分:0)

您可以使用一些方法来做到这一点:

x.getClass();

一个俗气的,经常在JDK中使用。问题是,如果x为null,则将生成NullPointerException而没有任何消息。好处是,从将来的某些Java版本(可能是Java 15)开始,错误消息将包含有关null的信息(因此,“ x”将出现在异常消息中)。有时候最简单的事情是最好的。

但是,如果不合适的话:

java.util.Objects.requireNonNull(x, "x");

也会这样做。该方法甚至返回“ x”,因此您可以根据需要以直通方式使用它。如果x为空,这将引发NPE并显示消息x

番石榴也有类似的方法,但我会坚持使用JDK本身的方法。

请注意,如果您愿意,可以通过在Objects.requireNonNull上添加一行来将lombok配置为使用lombok.config生成其nullcheck。