#java #intellij-idea
#java #intellij-idea
Вопрос:
У меня возникла досадная проблема с IntelliJ, когда он помещает желтые предупреждающие строки под моими аннотациями @Override при реализации интерфейса?
Есть идеи, почему?
Приветствия.
РЕДАКТИРОВАТЬ: ошибка гласит: «@Override не применимо к методу».
Объявление интерфейса:
public interface Material {
public long getID();
public String getMaterialCode();
public String getMaterialShortName();
public String getMaterialLongName();
}
замедление класса:
public class StandardMaterial implements Material {
private long id;
private String materialCode;
private String materialShortName;
private String materialLongName;
public long getID() {
return id;
}
@Override
public String getMaterialCode() {
return materialCode;
}
@Override
public String getMaterialShortName() {
return materialShortName;
}
@Override
public String getMaterialLongName() {
return materialLongName;
}
}
(С использованием Java 8)
Комментарии:
1. что такое сообщение intellij при наведении курсора мыши на @override? intellij не показывает ненужных ошибок. это должно быть проблемой в вашем коде
2. Случайно ли ваш проект настроен на совместимость с Java 1.5?
3. какое сообщение отображается при наведении курсора мыши
@Override
?4. @RobbyCornelissen Я использую уровень языка 7.0
5. @NimChimpsky уже использует java 8!
Ответ №1:
Если это проект maven, убедитесь, что у вас есть определение для плагина maven-compiler-в вашем pom.xml где вы явно устанавливаете уровень компиляции и исходного кода не менее 1.6.
Например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
По умолчанию установлено значение 1.5, поэтому @Override пока недоступен. Intellij Idea, похоже, оценивает плагин компилятора, даже если он не указан.
Ответ №2:
Переопределение аннотаций для интерфейсов поддерживается только с java 6 и выше.
Проверьте, что intellij использует правильный jdk и уровень языка, а также maven (или любой другой инструмент сборки, который вы используете за пределами intellij). Убедитесь, что вы не переопределили project sdk для этого конкретного модуля.
Ответ №3:
Не пишите свои методы вручную. Не могли бы вы создать только StandardMaterial
класс, который реализует Material
интерфейс, а затем ctrl space
автоматически генерировать реализованные методы? Кроме того, ваш getID
метод не имеет аннотации переопределения.