我在使用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)
答案 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
方法没有覆盖注释。