Подтвердить что ты не робот

Какова цель аннотации @Override?

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

Мой вопрос очень простой, почему мы, люди, используем аннотацию @Override и какова важность этой аннотации?

В старом JDK почему он не отображается как предупреждение, но в последнем JDK ему нужно тогда Why..?

4b9b3361

Ответ 1

Предположим, что у вас есть:

public class Foo
{
    public void bar(String x, String y) {}
}

public class Foo2 extends Foo
{
    public void bar(String x, Object y) {}
}

Вы действительно имели в виду Foo2.bar переопределить Foo.bar, но из-за ошибки в подписи это не так. Если вы используете @Override, вы можете заставить компилятор обнаружить ошибку. Он также указывает на любое чтение кода, что это переопределяет существующий метод или реализует интерфейс - советует им о текущем поведении и возможном влиянии переименования метода.

Кроме того, ваш компилятор может дать вам предупреждение, если метод переопределяет метод без указания @Override, что означает, что вы можете определить, добавил ли кто-нибудь метод с той же подписью в суперкласс, не зная об этом, - вы может не хотеть переопределять новый метод, так как ваш существующий метод может иметь другую семантику. Хотя @Override не предоставляет способ "un-overriding" метода, он, по крайней мере, подчеркивает потенциальную проблему.

Ответ 2

Просто, чтобы убедиться, что во время компиляции мы действительно переопределяем этот метод, также добавляется хорошая степень удобочитаемости кода

@Override существует с JDK 1.5, поэтому вы можете получить предупреждение ранее

Ответ 3

Используя эту аннотацию, вы можете быть уверены, что вы действительно переопределяете базовый метод, а не создаете новый (например, случайно используя неправильные аргументы). Если вы используете аннотацию @Override, вы получите ошибку времени компиляции, если что-то не так.

Ответ 4

Проверять во время компиляции, что вы фактически переопределяете метод. IDE может сразу сказать вам, когда вы предоставите эту аннотацию.