新建项目Maven项目在实现接口方法的时候@Override报错:@Override is not allowed when implementing interface method | @实现接口方法时不允许重写
下面给了提示需要设置语言级别为6,查看项目中模块的语言级别发现是5
因为@Override注解是从jdk1.5开始出现的,是用来标注方法重写的。通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法。@Override能够保证你正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误。出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。
出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。而IDE默认使用jdk1.5的编译器。我这个用的是jdk1.8的,所以我们需要把这里的基本改为6及以上就可以了,建议与jdk的版本对上,我这里选择的是8。
还可以选择将编译器的Target bytecode version(目标字节码版本)改为1.5以上的
虽然说这两种种办法能解决问题 但是我发现这种方法治标不治本 每次创建类时候 这两个位置都会变回原来的值,后来发现maven配置文件中的默认版本没有修改,使用指定版本就可以彻底解决问题,下面两种方式选一种就可以了。
1.在maven的setting.xml中添加
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
2.在项目的pom.xml文件中添加
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>