Что такое @Override для Java? - программирование
Подтвердить что ты не робот

Что такое @Override для Java?

Возможный дубликат:
Когда вы используете аннотацию Javas @Override и почему?

Есть ли другая причина для аннотирования метода с @Override, кроме того, чтобы проверить компилятор, что суперкласс имеет этот метод?

4b9b3361

Ответ 1

Как вы описали, @Override создает проверку времени компиляции, когда метод переопределяется. Это очень полезно, чтобы убедиться, что у вас нет глупой проблемы с подписью при попытке переопределить.

Например, я видел следующую ошибку:

public class Foo {
  private String id;
  public boolean equals(Foo f) { return id.equals(f.id);}
}

Этот класс компилируется как написанный, но добавление тега @Override к методу equals вызовет ошибку компиляции, поскольку она не отменяет метод equals для Object. Это простая ошибка, но она может уйти от глаз даже опытного разработчика.

Ответ 2

Это не только делает проверку компилятора - хотя этого было бы достаточно, чтобы сделать ее полезной; он также документирует намерение разработчика.

Например, если вы переопределяете метод, но не используете его нигде из самого типа, кто-то, входящий в код позже, может задаться вопросом, почему на земле это есть. Аннотации объясняют ее цель.

Ответ 3

Нет, вы в значительной степени прибивали его.

@Override сообщает компилятору ваше намерение: если вы помечаете метод @Override, вы должны переопределить что-то из суперкласса (или интерфейса, на Java 6). Хорошая среда IDE будет эффективно отмечать любой метод, который переопределяет метод без @Override, поэтому комбинация из двух поможет гарантировать, что вы делаете то, что вы пытаетесь сделать.

Ответ 4

nope - за исключением того, что он также улучшает читаемость (то есть в дополнение к любому показателю, который использует IDE, он позволяет легко заметить, что метод переопределяет декларацию в суперклассе)