@ override аннотация в JDK 1.6 - PullRequest
       14

@ override аннотация в JDK 1.6

9 голосов
/ 01 сентября 2010

Я использую JDK1.6. Когда я реализую интерфейс и в классе реализации, если я даю @override перед именами своих функций, Eclipse выдает ошибку компиляции. то есть приведенный ниже код неверен в соответствии с Eclipse.

public class SomeListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
       // code
    }
    /* other overridden methods here */
}

Если я удаляю аннотацию @Override, то код компилируется нормально. Означает ли это, что JDK1.6 больше не требует от нас добавления префикса @override?

Ответы [ 7 ]

27 голосов
/ 01 сентября 2010

Возможно, вам нужно установить уровень соответствия компилятора в eclipse.Это можно найти в Window-> Preferences-> Java-> Compiler

Если настройки компилятора по-прежнему установлены на 1,5, компилятор запретит аннотацию переопределения.

Редактировать: Также проверьте компиляторуровень соответствия для каждого проекта, если вы установили для них значение, отличное от значения по умолчанию.

2 голосов
/ 01 ноября 2012

Настройки компилятора Java могут находиться в нескольких местах в зависимости от выбранной вами конфигурации, Одним из способов является Window-> Preferences-> Java-> Compiler, изменив его на минимум 1.6, если он был установлен на более раннюю версию. Другой способ - щелкнуть правой кнопкой мыши на Project-> Properties -> Java Compiler -> JDK Compliance -> Выберите минимум JDK1.6, нажмите apply.

После того, как вы внесете изменения, дайте проекту скомпилироваться, он скомпилируется и применит изменения.

Если ни один из перечисленных выше вариантов не работает - попробуйте добавить rt.jar в classpath, это решит проблему.

1 голос
/ 14 мая 2014

Аннотация @Override изменена в версии Java 1.6.В Java 1.5 компилятор не разрешал аннотацию @Override для реализованных методов интерфейса, начиная с версии 1.6 это так.Компилятор

0 голосов
/ 01 сентября 2010

Похоже, ваш компилятор настроен для Java 5, когда @Override на интерфейсах было запрещено.

0 голосов
/ 01 сентября 2010

Нет, аннотация @Override все еще используется. Вы должны убедиться, что метод contextDestroyed действительно присутствует в интерфейсе ServletContextListener, и проверить импортированный пакет для этого интерфейса.

0 голосов
/ 01 сентября 2010

JDK1.6 определенно поддерживает это. Я не уверен, почему у вас будут проблемы.

Какую ошибку вы видите? Единственное, о чем я могу подумать, это убедиться, что вы используете правильный JDK в настройках вашего проекта. Может быть, вы компилируете против старого JDK?

...