@Override Snafu
Я создал файл проекта / класса в Eclipse Helios, используя JDK1.6. Я позволил затмению генерировать код для класса реализации интерфейса.
public interface Foo {
void bar();
}
public class FooImpl implements Foo {
@Override
public void bar() {
}
}
Все идет нормально. Теперь по какой-то причине я импортировал проект в Eclipse, который имеет JDK 1.5
и я вижу сообщение об ошибке The method bar() of type FooImpl must override a superclass method
с быстрым исправлением, чтобы удалить аннотацию @Override.
После поиска в Google я узнал, что есть что-то вроде OVERRIDE_SNAUF - где был обновлен компилятор Java 6.0, чтобы разрешить @Override для реализаций метода интерфейса.
3 ответа
Не могу найти вопрос, но - да, вы правы, @Override
аннотации не разрешалось аннотировать переопределенные методы интерфейса в Java 5. Поэтому вам придется удалить эти аннотации, если вы хотите скомпилировать код с помощью Java 5.
@Override хорош для проверки синтаксиса переопределения на этапе компиляции, поэтому он также применяется к интерфейсу по той же причине, я думаю.
Вы можете установить параметры компилятора на уровень соответствия 1.5, даже если у вас есть jdk 1.6. Таким образом, код, сгенерированный eclipse, будет совместим с Java 1.5 (он не добавит аннотацию @Override к методам, реализующим интерфейс). Я думаю, что вы можете установить его так, чтобы вообще никогда не помещать аннотацию @Override.
Ну, на самом деле это немного сложнее, чем это. Для полной совместимости вы должны установить JDK 1.6 и JDK 1.5 и установить каждый из них в качестве JDK по умолчанию для их уровня соответствия. Это лучший способ обеспечить полную обратную совместимость вашего кода.
В окне настроек (общее или для конкретного проекта) перейдите в Java->Compiler и установите там уровень соответствия. Также в Java-> Установленные JRE добавьте JDK 1.5, а затем в Java-> Установленные JRE-> Среды выполнения нажмите J2SE-1.5 и проверьте недавно установленный JDK 1.5. Это гарантирует, что eclipse будет использовать поведение компилятора, а также стандартную библиотеку, которая поставляется с JDK 1.5, если ваш проект или рабочее пространство настроено на использование этого уровня соответствия.