Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 @NonNullApi是否包含静态方法?_Java_Spring_Intellij Idea_Spring Data - Fatal编程技术网

Java @NonNullApi是否包含静态方法?

Java @NonNullApi是否包含静态方法?,java,spring,intellij-idea,spring-data,Java,Spring,Intellij Idea,Spring Data,我将@org.springframework.lang.NonNullApi注释放在我的包info.java上,用于存储库接口 @NonNullApi 包…jpa.repository; IntellJ IDEA告诉我们,我的静态方法中的参数(或参数)不需要检查 final类RepositoryUtil{ 静态void doSome(最终标准生成器){ 如果(builder==null){/yes 根据文档,@NonNullApi是“一种常见的Spring注释,用于声明给定包的参数和返回值在默

我将
@org.springframework.lang.NonNullApi
注释放在我的
包info.java
上,用于存储库接口

@NonNullApi
包…jpa.repository;
IntellJ IDEA告诉我们,我的
静态方法中的参数(或参数)不需要检查

final类RepositoryUtil{
静态void doSome(最终标准生成器){
如果(builder==null){/yes

根据文档,
@NonNullApi
是“一种常见的Spring注释,用于声明给定包的参数和返回值在默认情况下被视为不可为null。”

如果
RepositoryUtil
是您用
@NonNullApi
注释的包的一部分,则其参数和返回值(显然是指其方法的参数和返回值)将不可为null,因此检查null将是多余的

如果
builder
参数实际上可以为null,则可以使用
@Nullable
对其进行注释,以覆盖您使用
@NonNullApi
建立的包默认值

static String s1(Object object) {
    if (object == null) {
        throw new NullPointerException("object is null");
    }
    return object.toString();
}

default String i1(Object object) {
    if (object == null) {
        throw new NullPointerException("object is null");
    }
    return object.toString();
}
使用我的
@SpringBootTest

当我执行
.s1(null)
时,抛出了
NullPointerException

当我执行
.i1(null)
时,我得到

java.lang.IllegalArgumentException:SomeProductRepository.i1中的参数对象不能为null


这促使我得出结论,静态方法不算数。

你在调用什么对象
.i1(null)
on,您是如何定义它的?它可能是某个生成类的实例,该类正在包装您编写的类并抛出
IllegalArgumentException
。IntelliJ IDEA告诉您的和您的类实际做的是两件不同的事情。仅注释一个方法不会导致它执行空检查或抛出错误异常。这是向其他组件(如IDEA和Spring)发出的信号,用于将尝试调用null的方法标记为错误。IDEA似乎认为注释应用于静态方法(这与注释文档一致)但是Spring实际上并没有为静态方法实现空检查,这并不奇怪,因为它们不能在生成的包装器类中被重写。