今天在把eclipse工程拷貝到另一個電腦上的時候出現總是@override報錯,提示是將@override移除就好了,但是項目中很多這個注解的存在,Java小白的我覺的就算不知道這個編制存在與不存在的區別,但是既然存在了,肯定有他的用處,而且項目中有好多地方存在@override,總不能全部移除吧。就查了一下,就此總結一下
出錯原因:
開始以為是jar包引用的問題,嘗試過更改jar包,沒有用,才知道是jdk的問題,@Override是JDK5就已經有了,但是不支持對接口的實現,認為這不是Override而報錯。JDK6修正了這個Bug,無論是對父類的方法覆蓋還是對接口的實現都可以加上@Override。要解決該問題,首先要確保機器上安裝了jdk 1.6(其實此處我不確定這個確保問題呢,因為我電腦上只有1.8的版本,但是選擇里沒有1.8,所有我還是按照教程選擇了1.6)
首先方法一:(我的工程上試過沒有用呢)
選擇eclipse菜單Windows->Preferences-->java->Compiler-->compiler compliance level選擇 1.6,刷新工程,重新編譯。
方法二:(問題解決)
在報錯的工程上,鼠標右鍵選擇 Properties-->Java Compiler-->compiler compliance level 中選擇 1.6,刷新工程,重新編譯
擴展:Java 中的覆蓋@Override注解 寫與不寫的一點點理解
- 一般來說,寫與不寫沒什么區別,JVM可以自識別
- 寫的情況下:即說明子類要覆蓋基類的方法,基類必須存在方法
- (控制類型public,protected,返回值,參數列表類型)與子類方法完成一致的方法,否則會報錯(找不到被Override的方法)。
- 在不寫@Override注解的情況下,當基類存在與子類各種條件都符合的方法是即實現覆蓋; 如果條件不符合時,則是當成新定義的方法使用。
- 所以如果想覆蓋基類方法時,最好還是寫上@Override注解,這樣有利於編譯器幫助檢查錯誤