Переопределение метода - PullRequest
7 голосов
/ 22 марта 2010

Можете ли вы переопределить метод в Java без использования аннотаций?Поскольку eclipse не поддерживает его, если вы используете JRE6, вам нужно переключиться обратно на 5, чтобы использовать аннотацию @Override.Будет ли этот метод переопределен, если я удалю аннотацию?

@Override public String toString() {
    return name + " [" + genre + "]";
    }

Ответы [ 3 ]

8 голосов
/ 22 марта 2010

Можете ли вы переопределить метод в Java без использования аннотаций?

Да, аннотация @Override не требуется для переопределения метода.

Для того чтобы переопределить метод, достаточно иметь определение метода с той же сигнатурой метода, что и у класса-предка.

Аннотация @Override - это просто напоминание компилятору о том, что определение метода предназначено для переопределения метода.

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

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

Я использую Eclipse для Java 6 и могу использовать аннотацию @Override, поэтому я не совсем уверен, что может быть причиной этого. Аннотации поддерживаются в Java 5 и более плотно интегрированы в язык начиная с Java 6.

Редактировать

Из комментария Andreas_D к вопросу:

smile - это просто указывает на то, что текущий уровень источника для вашего проекта <1,5. Этот параметр довольно независимо от JRE, вы на самом деле можно использовать JRE 1.6 вместе с источником уровень 1.4 - и я думаю, вот что произошло. </p>

Похоже, что это одна из причин возникновения ошибки компиляции!

Способ проверки того, установлен ли «уровень соответствия компилятора» для чего-либо в Java 5,

  1. Перейдите к Свойствам проекта Java в Eclipse
  2. Затем перейдите в меню Java Compiler
  3. Убедитесь, что для уровня соответствия компилятора установлено значение 1,5 или выше.

Редактировать

Что касается скриншота Gandalf StormCrow, кажется, что уровень соответствия компилятора установлен ниже, чем JDK 1.5. Нажав на Изменить соответствие проекта и JRE на 1.5 , быстрое исправление должно исправить текущую ситуацию.

Проблема в том, что аннотации были введены в Java 5.

Похоже, что Java-проект в Eclipse в настоящее время настроен так, что исходный код может содержать только те функции, которые были представлены до Java 5, поэтому запрещено использование аннотаций.

Способ исправить ситуацию - указать Eclipse, что можно использовать функции Java 5, установив для уровень соответствия компилятора значение 1.5 или выше.

3 голосов
/ 22 марта 2010

@ override - это просто способ гарантировать, что если вы измените контракт (метод переопределен), этот метод не будет компилироваться.Без этого это будет рассматриваться как другое назначение.

Что касается JRE6, я не уверен, что вы имеете в виду: аннотации поддерживаются.

Попробуйте jdk?

0 голосов
/ 22 марта 2010

Вам не нужно использовать аннотацию @Override. Однако, если вы это сделаете, и метод не сможет переопределить метод в суперклассе, то компилятор вернет ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...