Есть ли способ принудительно использовать аннотацию @Override?Могу ли я принудительно использовать @Override?
Просто чтобы прояснить, я не спрашиваю «как я могу заставить подкласс реализовать метод» (как this):
public abstract class BaseClass {
public abstract void foo();
}
Я спрашиваю об этом сценарии именно:
public class AnnotatedSubclass extends BaseClass {
@Override
public void foo() {
System.out.println("I have @Override.");
}
}
public class NonAnnotatedSubclass extends BaseClass {
public void foo() {
System.out.println("I do not have @Override.");
}
}
Обратите внимание, что и компиляция, хотя NonAnnotatedSubclass
не имеет явной аннотации @Override
. Есть ли способ заставить компилятор выдать ошибку/предупреждение в случае NonAnnotatedSubclass
?
Я спрашиваю, потому что иногда, когда я расширяю классы, я случайно переопределяю родительские методы, потому что у них есть имена, похожие на те, которые я бы создал (например, .paint()
в Swing).
Ваша IDE может сказать вам, когда это произойдет, и автоматически исправить весь метод, который мог бы иметь '@ Override', но нет. –
«Не ссылаясь на абстрактные методы» О, но вы должны быть, если он переопределяет метод в «BaseClass». –
[Ошибка ошибки Google] (http://errorprone.info/bugpattern/MissingOverride) проверяет, чтобы это требовало их во время компиляции. –