@Override注解报错,The method xxx of type xxx must override a superclass method

  • 先交代环境:jdk1.8.0_65,eclipse版本: Oxygen Release (4.7.0)
  • 今天用到@Override注解时,发现eclipse报错The method xxx of type xxx must override a superclass method,网上一查,基本都是同一篇答案,如下:

    java1.5中继承接口是不需要@Override的,而在1.6中是需要添加@Override注解的,如果项目的编译器是1.5版本的就可能报错The method xxx of type must override a superclass method.
    解决此问题的办法是修改java编译器的版本,方法是:elicpse的Project菜单 –> Properties –> 找到Java Compiler将Compiler Compliance level修改为1.6即可
    这里写图片描述

  • 就连stackoverflow上的回答也是这个答案:

    It sounds like the JDK compliance level of your project is set to 1.5. (The version of Java installed on the machine only determines how high you can set the compliance level.) You can check this in Eclipse by opening the project properties (right click on the project name, then select “Properties”) and selecting “Java Compiler” on the left.
    In Java 1.6, the @Override annotation can (and should) be used on methods that are defined in implemented interfaces. Java 1.5 did not allow this.

  • 解决方法:其实并不能说这个答案的方向错了,而是不够详细。。。但也许是有(我)人(太)解(菜)决(菜)了。这里应该点击右上角红色的部分:
    这里写图片描述
    那里可以改变具体每个项目的编译设置,点进去找到我正在写的项目,发现编译环境确实是1.5,改成跟jdk一样的版本1.8,Apply,KO!
  • 改完之后,@Override注解没问题了,但是可能又出现一个错误,项目上出现小红×,但是错误不在代码里,切换到下面的Markers标签,发现错误如下:
    Java compiler level does not match the version of the installed Java project facet
    这个错误只需打开项目的本地文件夹,找到.settings文件夹下的org.eclipse.wst.common.project.facet.core.xml文件,更改如下代码为当前使用的jdk的版本即可:
    这里写图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`@Override` 注解报错 "Method does not override method from its superclass" 的原因是当前方法并没有正确地覆盖了父类中的方法。 要解决这个问题,你可以按照以下步骤进行检查和修复: 1. 确保当前方法的签名(包括方法名、参数列表和返回类型)与父类中的方法完全一致。如果签名不一致,编译器会认为你并没有正确地覆盖父类的方法。 2. 确保当前方法所在的类确实是父类的子类,而不是错误地定义了一个独立的方法。 3. 检查父类中的方法是否被正确地声明为可被子类覆盖(即使用了 `public` 或 `protected` 访问修饰符)。 4. 检查父类是否是正确的类或接口,确保你在覆盖方法时没有误用了其他类或接口。 如果你确认以上步骤都正确无误,但仍然遇到 `@Override` 报错问题,那可能是编译器或开发环境的问题。可以尝试以下解决方案: - 清理和重新构建项目:有时候编译器可能会出现缓存问题,清理和重新构建项目可以解决这些问题。 - 更新编译器或开发环境:有时候旧版本的编译器可能会存在一些 bug,更新到最新版本可能会解决这些问题。 - 检查编译选项:某些编译选项可能会导致 `@Override` 报错问题,可以检查编译选项是否设置正确。 总之,解决 `@Override` 报错问题的关键是确保当前方法正确地覆盖了父类的方法,并且排除其他可能导致问题的因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值