`
winnerlxh
  • 浏览: 91784 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

@override 报错 解决

    博客分类:
  • j2se
阅读更多
首先看一下下面的示例代码 :

Parent.java
Java代码 
public class Parent...{  
    public void parentMethod() ...{  
    }  


IChild.java
Java代码 
public interface IChild ...{  
    void interfaceMethod();  


Child.java
Java代码 
public class Child extends Parent implements IChild ...{  
 
    @Override 
    public void parentMethod() ...{  
    }  
 
    @Override 
    public void interfaceMethod() ...{  
    }  


由于代码很简单,我就不做说明
上述代码在jdk6下可以编译通过
而在jdk5下编译无法通过,输出的错误信息如下:
Child.java:7: 方法未覆盖其父类的方法
    @Override
     ^
1 错误

上面的错误信息说在Child.java第七行的Override注解是不对的,不对的原因是该方法(interfaceMethod)不是父类方法。

当然,实际上这个方法是类实现的接口中方法,但是,这个语法的jdk6的下面是可以通过的,也就是说java6认为类覆盖父类方法与实现接口方法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。

解决方法:
第一种解决方案:
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override
而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override

修改你的eclipse指定的编译器版本
在选项里的java compiler中指定版本至少在5.0以上

在myEclipse中改变编译器的方法:Project->Properties->Java Compiler->Configure Workspace Setting,在弹出的页面中可以进行设置。
这个来自于:http://blog.csdn.net/CodeJoker/archive/2009/07/02/4317361.aspx

第二种解决方案:(我使用这种方法,没有问题)
在JAVA 1.5和1.6中@override的用法是有些区别的,虽然改变了JRE但eclipse还是会报错。
解决办法:Windows->Preferences-->java->Compiler-->compiler compliance level设置成6.0就OK了.
注意:
但是在导入一个工程时,编译并打包到Tomcat后,发现出现java.lang.UnsupportedClassVersionError: Bad version number in .class file异常,检查了一下我的myEclipse,我发现我的eclipse的compiler的jdk版本,tomcat所用的jdk版本不一致,后来设置成一致就可以了。看来果然是这个问题引起。
    那次在Linux上部署工程时也出现过因为版本不同引起的问题,那时我们用的IDE的编译器是JDK5.0,而那台Linux装的是JDK6.0,部署后发现很多功能都出错,看来有些东西还是注意一下啊。
    附,在myEclipse中改变编译器的方法:Project->Proper的ties->Java Compiler->Configure Workspace Setting,在弹出的页面中可以进行设置

其实这种方式与第二种差不多,殊途同归。第一种方式重点是设置这一个项目。而第二种重点设置所以项目。不过都可以用。
如果通过上面的设置你还有错(错误信息:Java compiler level does not match the version of the installed Java project facet.)的话,请看下你这里的设置和你的jre的版本是不是一样的,如果不是一样的话,改成一样的就可以了:



右 键点击出错的工程,选择属性,在弹出的preference中找到Project Facets,然后可以看到当前工程使用的jdk版本号,再看看你当前Studio中Install JREs,这两个应该不同,你把facets中的java版本修改为与你的jre版本一致就可以了。
  • 大小: 22 KB
分享到:
评论

相关推荐

    android @override 报错解决方案

    现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...

    个人开发中遇到常见问题及解决办法(吐血总结)

    9 Java @override报错的解决方法 10 js实现 选中子页面的checkbox,点击确认,将选中的数据显示到父页面 11 解析oracle的rownum 12 ava web项目中开放一个webservice接口实例 13 js方式实现 系统时间显示 14 js 按...

    The method of type must override a superclass method解决方式, myeclipse, java, web

    在阅读《The method of type must override a superclass method.docx》文档时,你应该能找到具体的例子和解决方案,文档可能包含了详细的代码示例以及如何在MyEclipse中进行调试和修复的步骤。 总之,理解并正确...

    maven配置工具

    1. **处理@Override报错**:当出现@Override报错时,需要在`pom.xml`中添加Maven编译插件配置,指定JDK版本,例如: ```xml <groupId>org.apache.maven.plugins <artifactId>maven-compiler-plugin <version>...

    解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法

    总的来说,解决MyBatis-Plus 3.1.1版本使用Lambda表达式查询报错的问题,主要从以下几个方面入手: 1. 检查并确保实体类中的字段有正确的`@TableField`注解,指定了数据库中的对应列名。 2. 在配置中启用Lambda支持...

    完美解决request请求流只能读取一次的问题

    完美解决request请求流只能读取一次的问题 在Web开发中,Request对象的InputStream只能读取一次,这是一个常见的限制。为了解决这个问题,我们可以自定义一个HttpServletRequestWrapper,覆写getInputStream()和...

    android studio初始化报错

    在提供的“解决OpenCV 初始化报错.txt”文件中,应该包含了更详细的解决步骤或具体问题分析。请查阅该文件以获取更具体的信息。通过以上步骤和知识点,大部分OpenCV初始化报错问题应该能得到解决。如果问题依然存在...

    Cocos2dxDownloader.java文件报错需要引入的第三方包

    在您提供的信息中,`Cocos2dxDownloader.java`文件报错,这通常意味着在编译或运行阶段,项目缺少必要的依赖。 报错的原因是缺少了`android-async-http-1.4.8`这个第三方包。`android-async-http`是一个非常流行的...

    delphi编程报错大全

    ### Delphi编程报错大全解析 #### 一、引言 在Delphi开发过程中,遇到各种编译错误是在所难免的。本篇文章旨在提供一份详尽的Delphi编程错误汇总及解析指南,帮助开发者们快速定位问题并解决,提高开发效率。 ###...

    关于vue-resource报错450的解决方案

    关于vue-resource报错450的解决方案 标题解释 本篇文章主要介绍了关于vue-resource报错450的解决方案。Vue-resource是一个基于Vue.js的HTTP请求库,用于处理AJAX请求。报错450是指在使用vue-resource时出现的...

    关于iframe页面报错如何跳到框架显示

    ### 关于iframe页面报错如何跳到框架显示 在网页开发过程中,经常遇到的一个问题是当嵌入在`iframe`中的内容出现错误时,如何让用户直接看到这个错误所在的框架或者跳转到一个特定的页面。这个问题涉及到前端...

    SynchReadItemExample.rar_item.read报错_jeasyopc

    为了调试和解决“item.read报错”的问题,我们需要查看具体的错误信息,这通常可以通过`ex.getMessage()`获取。此外,检查OPC服务器的日志,以及确认JeasyOPC库的版本是否兼容也是排查问题的关键步骤。如果问题依然...

    spring cloud gateway跨域实现

    如果一切配置无误,你应该能在后端服务接收到前端的请求,并且浏览器不会因为跨域限制而报错。 总的来说,Spring Cloud Gateway提供了强大的网关管理和过滤能力,对于解决跨域问题,它通过自定义过滤器和配置CORS...

    解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法

    为了解决这个问题,可以采取以下几种方法: 1. **使用Mybatis-Plus的TypeHandler**: Mybatis-Plus允许自定义TypeHandler来处理特定类型的字段。对于`LocalDateTime`,你可以创建一个自定义的TypeHandler,例如`...

    android-gif-drawable解决5.0适配

    `android-gif-drawable`库正是为了解决这个问题而诞生的,它是一个强大的第三方库,提供高效、内存友好的GIF解析和渲染。 `android-gif-drawable`库由Sebastian Staudt开发,其核心目标是为Android平台提供高性能的...

    导出excel此单元格中的数字为文本格式,或者其前面有撇号

    总结来说,解决Excel单元格中数字以文本形式显示的问题,关键在于理解Excel的数字格式规则以及EasyExcel的自定义转换器机制。通过编写自定义转换器,可以有效地处理这类问题,确保数据在导入导出过程中的准确性。...

    有问题的RecyclerView的代码

    检查你的日志输出,找到报错的具体信息,这将帮助定位问题。常见的错误可能包括: 1. 未初始化的Adapter或LayoutManager。 2. 数据源为空或未正确设置。 3. RecyclerView在布局中的大小为0,导致无法显示。 4. 源...

    android-async-http-master.zip

    总结,Android-Async-Http框架为Android开发者提供了一种简单、高效的网络通信解决方案。通过理解和掌握这个库,开发者可以更好地处理网络请求,提高应用的性能和用户体验。在实际开发中,根据项目需求,结合其他的...

    java接口案例

    在这个例子中,`Dog`类必须提供`Animal`接口中声明的所有方法的实现,否则编译器会报错。 除了方法,Java 8还引入了默认方法(default methods)。默认方法在接口中具有方法体,可以为接口提供默认实现。这样,实现...

Global site tag (gtag.js) - Google Analytics