未注释的参数覆盖@??? 范围

Der*_*usA 8 spring warnings nullable intellij-idea notnull

覆盖代码时:

    @Override
  public void open(ExecutionContext executionContext) {
    super.open(executionContext);
Run Code Online (Sandbox Code Playgroud)

来自:org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader

我收到 IntelliJ 警告:

未注释的参数覆盖@??? 参数较少... (Strg+F1) 检查信息:报告与在常量条件和异常检查中配置的 @Nullable 和 @NotNull 注释用法相关的问题。

我能做些什么来避免这种情况?

Dmi*_*pov 12

解释

虽然我不能AbstractItemCountingItemStreamItemReader从这个神器上重现这个

    实现组:'org.springframework.batch',名称:'spring-batch-core',版本:'4.1.2.RELEASE'

,这个注解意味着父方法在参数上有一些@NotNull/@NonNull注解,而覆盖方法没有。

要修复它,您需要在覆盖方法上放置相同的注释。

正如我所写,我下载的版本中没有这样的注释,但请检查您的来源并从那里复制参数注释。

此警告有时会出错,因此它可以帮助重新启动 IDEA。当我尝试编写一个简单的示例来重现警告时,重新启动会有所帮助。

一个简单的可重复示例

父类:

package com.dpopov.java.stackoverflow;

import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;

public class ParentClass {
    public void nonNullMethod(@NonNull String string) {
        System.out.println("S is: " + string);
    }

    public void nullMethod(@Nullable String string) {
        System.out.println("S is: " + string);
    }
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

package com.dpopov.java.stackoverflow;

public class NonNullOverride extends ParentClass {

    public static void main(String[] args) {
        NonNullOverride nonNullOverride = new NonNullOverride();
        nonNullOverride.nonNullMethod(null);
        nonNullOverride.nullMethod(null);
    }

    @Override
    public void nonNullMethod(final String string) {
        super.nonNullMethod(string);

        if (string.equals("666")) {
            System.out.println("yes");
        }
    }

    @Override
    public void nullMethod(final String string) {
        super.nullMethod(string);

        if (string == null) {
            System.out.println("I am null, it can be.");
            return;
        }

        if (string.equals("666")) {
            System.out.println("yes");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 为100%-sure,我已经添加org.springframework.lang.NonNullorg.springframework.lang.Nullable注解来适当Nullable/NonNull检查的注释 Java | Probable bugs | @NotNull/@Nullable problems(在File | Settings | Editor | Inspections)。您可以通过按下Configure annotations按钮来执行此操作(请参阅屏幕截图)。 为 IDEA 检查配置非空和可为空的注释

    • 结果,我收到了关于孩子班级的警告#nonNullMethod关于非注释非空子方法参数的警告
    • 特别注意,非注释@Nullable方法不会引发任何警告。
    • 警告仅在 IDEA 重新启动后起作用。
    • 如果您打开/关闭检查设置中的复选框并尝试重现它们,则整个检查看起来工作起来很麻烦。因此,再次启动/使缓存无效可能有助于摆脱或显示不正确的警告。