2014-12-19 2 views
0

Я получаю ошибки компиляции в eclipse при использовании аннотации @Override для класса, реализующего интерфейс.@Override ошибка компиляции, реализация интерфейса (eclipse jre7 Windows)

Уровень соответствия JDK установлен на 1.7.

Я использую последнюю версию jdk7.

Ошибка: «Метод {MethodName} типа {имя класса} должен переопределить суперкласса метод»

public interface DataDictionary { 
 
\t 
 
\t public Map<String, ? > getAllEntries(String dictionaryName); 
 
\t ... 
 
     ... 
 

 
} 
 

 

 
public class StringDictionary implements DataDictionary { 
 

 
     @Override // this generates the error 
 
\t public Map<String, ?> getAllEntries(String dictionaryName) { 
 

 
\t \t // some implementation 
 

 
\t \t return dataDictEntries; 
 

 
\t }

+0

Вы не правы должным образом. Это все, что мы можем сказать. – user2357112

+0

Соответствующий код облегчил бы работу над ответом, который был бы полезен. – rfornal

+0

Я реализую интерфейс, и проект работает отлично, как и предполагалось. Только когда я добавляю аннотацию @Override, она дает ошибку. –

ответ

0

Я думаю, что решили. Раньше я только изменял свойства рабочей области, но использовал проект maven с SVN. При каждом обновлении Maven внутренне устанавливал свойство каждого проекта использовать «соответствие требованиям Java Project Project 1.5».

Я заменил каждый проект на использование JDK рабочего пространства и удалил конкретные настройки проекта в проектах SVN, чтобы предотвратить будущие ошибки после обновления кода.

Спасибо.

0

Если вы используете затмение, то удалить метод замедления в подклассе (StringDictionary), то компилятор попросит вас реализовать не реализованный метод в суперклассе. то с помощью eclipse вы используете опцию Add unimplemented method.

Надеюсь, что это решит вашу проблему.

+0

Я пробовал это, но когда Eclipse добавляет нереализованные методы, он не добавляет '@Override' –

+0

@ArihantBanthia Я думаю, что это проблема вашего затмения, а не проблема Java, лучше попробовать любую другую версию затмения? –

0

Я пробовал именно ваш код - никаких проблем. JDK1.6 должен быть достаточным, так как в JDK1.6 был добавлен @Override для интерфейсов. Из всего, что я вижу в вопросе, ваш код правильный и должен работать нормально.

Я предлагаю такие вещи, как перезапуск Eclipse или изменение метода, а затем изменить его обратно, кажется, что внутри Eclipse вышел из синхронизации с вашим кодом.

+0

Я скомпилировал весь код в JDK 1.6, это прекрасно. Но когда я перекомпилирую код с помощью JDK 1.7, он дает ошибку. –

0

Еще одно предложение, удалите файл класса eclipse, сгенерированный для вас, внесите некоторые изменения (например, комментарии) в файл, сохраните и запустите eclipse для вас снова.

Смежные вопросы