同时覆盖代码:
@Override
public void open(ExecutionContext executionContext) {
super.open(executionContext);
来自:org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
我收到IntelliJ警告:
未注释的参数会覆盖@ ???参数较少...(Strg + F1) 检查信息:报告与在“常量条件和异常检查”中配置的@Nullable和@NotNull批注使用相关的问题。
如何避免这种情况?
答案 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");
}
}
}