image-1653553221213
新建项目Maven项目在实现接口方法的时候@Override报错:@Override is not allowed when implementing interface method | @实现接口方法时不允许重写

下面给了提示需要设置语言级别为6,查看项目中模块的语言级别发现是5
image-1653553393276

因为@Override注解是从jdk1.5开始出现的,是用来标注方法重写的。通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法。@Override能够保证你正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误。出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。

出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。而IDE默认使用jdk1.5的编译器。我这个用的是jdk1.8的,所以我们需要把这里的基本改为6及以上就可以了,建议与jdk的版本对上,我这里选择的是8。

还可以选择将编译器的Target bytecode version(目标字节码版本)改为1.5以上的
1653553650(1)

虽然说这两种种办法能解决问题 但是我发现这种方法治标不治本 每次创建类时候 这两个位置都会变回原来的值,后来发现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>