实现接口时@Override注解问题
2016-01-18 15:23
691 查看
用IntelliJ 15打开一个以前的工程,发现代码出现很多关于@Override的错误,编辑器提示:“@Override is not allowed when implementing interface method”,怎么会这样子?看来@Override是个有故事的家伙,呵呵!
先来上张图吧!看看到底是什么样子的错误。
下面我们来分析一下该问题。我们都知道@Override从jdk1.5开始出现的,是用来标注方法重写的。通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法。@Override能够保证你正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误。
出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。而我的IDE默认使用jdk1.5的编译器。
我们只需要将language level设置高于jdk1.5版本即可,因为我机器安装的是jdk1.7,所以我将language level设置为:jdk1.7,问题解决。
IntelliJ设置方法:菜单File → Project Structure → Project Language Level
Eclipse设置方法:菜单Windows->Preferences-->java->Compiler-->compiler compliance level
文章作者:
admin
本文链接:
http://javatech.wang/index.php/archives/37/
版本所有 ©转载时必须以链接形式注明作者和原始出处
先来上张图吧!看看到底是什么样子的错误。
下面我们来分析一下该问题。我们都知道@Override从jdk1.5开始出现的,是用来标注方法重写的。通常方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法。@Override能够保证你正确重写方法,当你重写方法出错时,比如方法名误写,或者漏掉参数,编译器会提示编译错误。
出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。而我的IDE默认使用jdk1.5的编译器。
我们只需要将language level设置高于jdk1.5版本即可,因为我机器安装的是jdk1.7,所以我将language level设置为:jdk1.7,问题解决。
IntelliJ设置方法:菜单File → Project Structure → Project Language Level
Eclipse设置方法:菜单Windows->Preferences-->java->Compiler-->compiler compliance level
文章作者:
admin
本文链接:
http://javatech.wang/index.php/archives/37/
版本所有 ©转载时必须以链接形式注明作者和原始出处
相关文章推荐
- fastjson处理接口时的一个问题
- MyEclipse Web Project转Eclipse Dynamic Web Project
- Windows Clang开发环境备忘
- 浅谈汇编器、编译器和解释器
- 让我们做个简单的解释器(三)
- 让我们做个简单的解释器(一)
- 用 350 行代码从零开始,将 Lisp 编译成 JavaScript
- 局域网与广域网接口标准
- RJ-45接口信号定义
- DVI 视频接口图文解析
- 如何设置域名接口
- 通过C#实现自动售货机接口
- C#中IEnumerable接口用法实例分析
- C#中实现判断某个类是否实现了某个接口
- C#实现两接口中同名方法实例分析
- 傻瓜式用Eclipse连接MySQL数据库
- C#中的ICustomFormatter及IFormatProvider接口用法揭秘
- C#接口实现方法实例分析
- android @override 报错解决方案