Я работал над унаследованным кодом и пытался его очистить, и, очевидно, время от времени вы будете получать предупреждения о том, что вы ничего не можете сделать, кроме как подавить предупреждение.
К сожалению, по некоторым причинам не все аннотации SuppressWarnings («непроверенные») работают, и когда я запускаю сборку, некоторые методы выдают жалобу, которая должна быть подавлена.
Например,
public class Foo extends Bar {
public Foo () {
// Some code
}
@Override
@SuppressWarnings("unchecked")
public Object visit(Visitor v) {
v.accept(this);
}
//Other code omitted.
}
Выдает предупреждение, когда дело доходит до компиляции
Warning:(18, 19) java: visit(...Visitor) in ...Foo overrides <R>visit(...Visitor<R>) in ...Bar
return type requires unchecked conversion from java.lang.Object to R
Как ни странно, когда IntelliJ выполняет анализ файла в реальном времени, он не сообщает об ошибках или предупреждениях, он появляется только во время компиляции.
Кроме того, я могу удалить предупреждение, если использую «Подавление» на уровне класса, однако я не хочу использовать это решение, поскольку оно не подходит для больших классов.
Кто-нибудь может объяснить, что происходит, и как лучше всего это решить?