Intellij覆盖警告

时间:2014-06-17 09:50:45

标签: java intellij-idea

我在使用IntelliJ时遇到了一个恼人的问题,它在实现界面时会在@Override注释下面放置黄色警告线?

enter image description here

任何想法为什么?

干杯。

编辑:错误显示“'@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)

enter image description here

3 个答案:

答案 0 :(得分:3)

如果是maven项目,请确保在pom.xml中有maven-compiler-plugin的定义,其中明确地将编译和源代码级别设置为至少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也会评估编译器插件。

答案 1 :(得分:1)

只有java 6及更高版本支持覆盖接口的注释。

检查intellij是使用正确的jdk和语言级别,还是使用maven(或者你在intellij之外使用的任何构建工具)。检查您是否未覆盖此特定模块的项目sdk。

答案 2 :(得分:0)

不要手动编写方法。你能创建一个实现StandardMaterial接口的Material类,然后ctrl + space自动生成实现的方法吗?此外,您的getID方法没有覆盖注释。