java - @NonNullApi 是否涵盖静态方法?

标签 java spring intellij-idea spring-data

我在我的 package-info.java 上为存储库接口(interface)添加了 @org.springframework.lang.NonNullApi 注释。

@NonNullApi
package ....jpa.repository;

IntellJ IDEA 告诉我的 static 方法中的参数(或参数)不需要检查。

final class RepositoryUtil {

    static void doSome(final CriteriaBuidler builder) {
        if (builder == null) { // <<-- right here!!!
            throw new NullPointerException("builder is null");
        }
    }
}

IntelliJ IDEA 告诉我

Parameter 'builder' inherits container annotation, thus 'non-null`

它告诉我的是事实吗?

最佳答案

是的。

根据文档,@NonNullApi 是“一个常见的 Spring 注释,用于声明给定包的参数和返回值默认为不可为空。”

如果RepositoryUtil是你用@NonNullApi注释的包的一部分,它的参数和返回值(显然意味着它的方法的参数和返回值)将是非-nullable,因此检查 null 是多余的。

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

关于java - @NonNullApi 是否涵盖静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402675/

相关文章:

java - 使用 Java 的 Optional 进行 Spring 注入(inject)

java - 发现以元素 'global-method-security' 开头的无效内容

java - 获取 Spring bean 的真实 Class 对象

intellij-idea - IntelliJ IDEA : How to get the usages of a maven dependency?

java - IntelliJ - 创建对象时识别类,但方法不会自动完成或编译

java - 在运行时镜像 java 中找不到适合 sqlite 的驱动程序

java - 获取一天的总小时数

java - Java 中的事件监听器和处理程序有什么区别?

java - 在 IDEA 中解决工作区项目的依赖关系

java - 使用 onClickListener 动态地将多个表行添加到表布局中