Есть класс
class Base {
public String toString() {
return this.getClass().getName();
}
}
В нем перекрывается метод toString без нотации @override. При компиляции в IntelliJ IDEA 2016.3 я ожидаю увидеть warning, но его нет. Добавлял в параметры компилятора Settings -> Compiler -> Java compiler -> Additional command line параметры -Xlint, -Xlint:all, -Xlint:overrides - никакого эффекта не возымело. Что я делаю не так?
Суть аннотации @override заключается в проверке наличия аннотируемого метода в суперклассе и не более того.
В случае переопределения метода без аннотации – никаких предупреждений быть не должно.
Вот если бы Вы указали аннотацию @override для метода, которого нет в суперклассе, то в этом случае IDE бы известила Вас об этом.
Ответ был найден на англоязычном SO http://stackoverflow.com/questions/4330275/javac-xlintoverrides-not-working Спасибо @post_zeew
Проблему отсутствия @Override компилятор не отслеживает (данная директива запрещает перекрывать отсутствующий метод). Но может отследить сама IDE. Для этого нужно зайти в Settings -> Editor -> Inspections и настроить параметр Missing @Override annotations. При этом можно еще снять чекбокс с опции `ignore 'equals()', 'hashCode()' and 'toString() methods'.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости