Возможный дубликат:
Когда вы используете аннотацию Javas @Override и почему?
Есть ли другая причина для аннотирования метода с @Override, кроме того, чтобы проверить компилятор, что суперкласс имеет этот метод?
Возможный дубликат:
Когда вы используете аннотацию Javas @Override и почему?
Есть ли другая причина для аннотирования метода с @Override, кроме того, чтобы проверить компилятор, что суперкласс имеет этот метод?
Как вы описали, @Override создает проверку времени компиляции, когда метод переопределяется. Это очень полезно, чтобы убедиться, что у вас нет глупой проблемы с подписью при попытке переопределить.
Например, я видел следующую ошибку:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
Этот класс компилируется как написанный, но добавление тега @Override к методу equals вызовет ошибку компиляции, поскольку она не отменяет метод equals для Object. Это простая ошибка, но она может уйти от глаз даже опытного разработчика.
Это не только делает проверку компилятора - хотя этого было бы достаточно, чтобы сделать ее полезной; он также документирует намерение разработчика.
Например, если вы переопределяете метод, но не используете его нигде из самого типа, кто-то, входящий в код позже, может задаться вопросом, почему на земле это есть. Аннотации объясняют ее цель.
Нет, вы в значительной степени прибивали его.
@Override
сообщает компилятору ваше намерение: если вы помечаете метод @Override
, вы должны переопределить что-то из суперкласса (или интерфейса, на Java 6). Хорошая среда IDE будет эффективно отмечать любой метод, который переопределяет метод без @Override
, поэтому комбинация из двух поможет гарантировать, что вы делаете то, что вы пытаетесь сделать.
nope - за исключением того, что он также улучшает читаемость (то есть в дополнение к любому показателю, который использует IDE, он позволяет легко заметить, что метод переопределяет декларацию в суперклассе)