Java 如何使@NotNull引发运行时异常?
如果我将null作为参数传递给Java 如何使@NotNull引发运行时异常?,java,lombok,Java,Lombok,如果我将null作为参数传递给@NotNull注释,是否有任何框架可以引发异常?我指的不是静态分析,而是运行时检查 如果没有,如何实现它?如果您使用的是Java 6或更低版本,那么您可以使用Guava前提条件 Preconditions.checkNotNull(param); 但是,如果您使用java7或更高版本,则对象中有一个实用方法 Objects.requireNonNull(param); 还有一个重载,它使用字符串将消息添加到将被抛出的NullPointerException
@NotNull
注释,是否有任何框架可以引发异常?我指的不是静态分析,而是运行时检查
如果没有,如何实现它?如果您使用的是Java 6或更低版本,那么您可以使用
Guava
前提条件
Preconditions.checkNotNull(param);
但是,如果您使用java7
或更高版本,则对象中有一个实用方法
Objects.requireNonNull(param);
还有一个重载,它使用字符串将消息添加到将被抛出的NullPointerException
Objects.requireNonNull(param,"Param cannot be null");
为您生成这些样板文件。不是用@NotNull注释方法,而是注释参数@NonNull
import lombok.NonNull;
public class NonNullExample extends Something {
private String name;
public NonNullExample(@NonNull Person person) {
super("Hello");
//// if (person == null) {
//// throw new NullPointerException("person");
//// }
this.name = person.getName();
}
}
查看标记的许多问题以了解更多信息。我不是指静态分析,但运行时行为注释没有运行时效果,只是通过反射可见。您需要编写一个字节码转换器(“增强器”,如果必须的话)来自动添加空检查。@JeffreyBosboom不是真的,这取决于客户的保留策略annotation@SleimanJneidi:即使在运行时保留的注释也不像代码那样执行——它们只是常量的容器,可以由reflection.Java 7+Objects.requireNotNull(Object o)读取。不需要外部库。