用IntelliJ 15打开一个之前的工程,发现代码出现不少关于@Override的错误,编辑器提示:“@Override is not allowed when implementing interface method”,怎么会这样子?看来@Override是个有故事的家伙,呵呵! php
先来上张图吧!看看究竟是什么样子的错误。 java
下面咱们来分析一下该问题。咱们都知道@Override从jdk1.5开始出现的,是用来标注方法重写的。一般方法重写发生在继承父类,重写父类方法,或者实现接口,实现接口方法。@Override可以保证你正确重写方法,当你重写方法出错时,好比方法名误写,或者漏掉参数,编译器会提示编译错误。
出现以上问题,则跟编译器版本问题有关。编译器1.5只支持@Override注释重写父类方法,不支持实现接口方法。而个人IDE默认使用jdk1.5的编译器。 编辑器
咱们只须要将language level设置高于jdk1.5版本便可,由于我机器安装的是jdk1.7,因此我将language level设置为:jdk1.7,问题解决。 ide
IntelliJ设置方法:菜单File → Project Structure → Project Language Level
Eclipse设置方法:菜单Windows->Preferences-->java->Compiler-->compiler compliance level .net