Объяснение
Хотя я не могу воспроизвести это на 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.NonNull
и org.springframework.lang.Nullable
аннотации к соответствующим Nullable
/ NonNull
аннотациям инспекции Java | Probable bugs | @NotNull/@Nullable problems
(в File | Settings | Editor | Inspections
). Вы делаете это, нажимая кнопку Configure annotations
(см. Скриншот).
- В результате я получил предупреждение о классе ребенка
#nonNullMethod
:
- Особо обратите внимание, что неаннотирующий метод
@Nullable
не вызывает никаких предупреждений.
- Предупреждение сработало только после перезапуска IDEA.
- Вся проверка выглядит довольно глючной, если вы включите / выключите флажки в настройках проверки и попытаетесь воспроизвести их. Итак, снова, перезапуск / аннулирование кэшей может помочь избавиться или показать неправильное предупреждение.