Предупреждения переопределения Intellij

#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 метод не имеет аннотации переопределения.