Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使@NotNull引发运行时异常?_Java_Lombok - Fatal编程技术网

Java 如何使@NotNull引发运行时异常?

Java 如何使@NotNull引发运行时异常?,java,lombok,Java,Lombok,如果我将null作为参数传递给@NotNull注释,是否有任何框架可以引发异常?我指的不是静态分析,而是运行时检查 如果没有,如何实现它?如果您使用的是Java 6或更低版本,那么您可以使用Guava前提条件 Preconditions.checkNotNull(param); 但是,如果您使用java7或更高版本,则对象中有一个实用方法 Objects.requireNonNull(param); 还有一个重载,它使用字符串将消息添加到将被抛出的NullPointerException

如果我将null作为参数传递给
@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)读取。不需要外部库。