Intellij Idea 未注解的参数覆盖@???参数

uxh89sit  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(91)

重写代码时:

@Override
  public void open(ExecutionContext executionContext) {
    super.open(executionContext);

来自:org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
我收到了一个IntelliJ警告:

Not annotated parameter overrides @??? parameter less... (Strg+F1) 
Inspection info: Reports problems related to @Nullable and @NotNull annotations usage configured in Constant conditions & exceptions inspection.

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

s5a0g9ez

s5a0g9ez1#

说明

虽然我不能在AbstractItemCountingItemStreamItemReader上从这个工件复制这个

implementation group: 'org.springframework.batch', name: 'spring-batch-core', version: '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);
    }
}

子类:

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");
        }
    }
}
  • 为了100%确定,我已经将org.springframework.lang.NonNullorg.springframework.lang.Nullable注解添加到检查Java | Probable bugs | @NotNull/@Nullable problems(在File | Settings | Editor | Inspections中)的相应Nullable/NonNull注解中。您可以通过按下Configure annotations按钮来执行此操作(参见屏幕截图)。

  • 结果,我得到了child类#nonNullMethod的警告:

  • 特别要注意的是,非注解的@Nullable方法不会引发任何警告。

  • 警告仅在IDEA重新启动后起作用。

  • 如果你在检查设置中打开/关闭复选框并试图重现它们,整个检查看起来工作得很不正常。因此,再次,重新启动/无效缓存可能有助于摆脱或显示不正确的警告。

相关问题