未注释的参数会覆盖@ ???参数

时间:2019-06-20 11:48:30

标签: spring intellij-idea warnings nullable notnull

同时覆盖代码:

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

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

我收到IntelliJ警告:

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

如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

说明

尽管我无法从此工件上在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批注添加到检查{{1 }}(在Nullable中)。您可以通过按NonNull按钮来执行此操作(请参见屏幕截图)。 Cofigure non-null and nullable annotations for IDEA inspections

    • 结果,我收到了有关孩子的课程Java | Probable bugs | @NotNull/@Nullable problems的警告: Warning on non-annotated non-null child method argument
    • 请特别注意,非注释File | Settings | Editor | Inspections方法不会引起任何警告。
    • 警告仅在IDEA重新启动后起作用。
    • 如果您打开/关闭检查设置中的复选框并尝试重现它们,则整个检查看起来会很麻烦。因此,再次,重新启动/使缓存无效可能有助于摆脱缓存或显示错误的警告。