1. 程式人生 > >@Override報錯處理詳解

@Override報錯處理詳解

轉載請註明出處:http://blog.csdn.net/chindroid/article/details/7653289


一、java @override 報錯處理

做專案的時候,同事那邊電腦上編譯通過的java程式碼,或者是網上下載的樣例程式碼,匯入工程後卻是編譯不通過,總是@override報錯,把@override去掉就好了,有時候@Override出現的地方很多,要全部刪除@Override很繁瑣很吐血,不能從根本上解決問題。網上找了一下原因,才知道:

據說這是jdk的問題,@Override是JDK5就已經有了,但有個小小的Bug,就是不支援對介面的實現,認為這不是Override 而JDK6修正了這個Bug,無論是對父類的方法覆蓋還是對介面的實現都可以加上@Override。
首先要確保安裝了jdk 1.6,
然後,在eclipse中修改配置,在 Windows->Preferences-->java->Compiler-->compiler compliance level 中選擇 1.6,重新整理工程,重新編譯下; 如果還是不行,就在報錯的工程上,滑鼠右鍵選擇 Properties-->Java Compiler-->compiler compliance level中選擇 1.6,重新整理工程,重新編譯下。

我是按照以上的步驟進行的,但是還是報錯,除錯了很久,結果重新啟動eclipse就好了!!!囧。。。

二、Android之@Override詳解

Android的開發者對@Override肯定是非常熟悉,不管是自己的程式碼中還是書上都會出現,但是他是什麼意思呢?如下:
  @Override是虛擬碼,表示重寫(當然不寫也可以),不過寫上有如下好處:
1、可以當註釋用,方便閱讀
2、編譯器可以給你驗證@Override下面的方法名是否是你父類中所有的,如果沒有則報錯比如你如果沒寫@Override而你下面的方法名又寫錯了,這時你的編譯器是可以通過的(它以為這個方法是你的子類中自己增加的方法)
  example:

  在重寫父類的onCreate時,在方法前面加上@Override系統可以幫你檢查方法的正確性。例如:

  public  void  onCreate(BundlesavedInstanceState){…….}
  這種寫法是正確的,如果你寫成
  public  void  oncreate(BundlesavedInstanceState){…….}
  這樣編譯器會報如下錯誤——
  Themethodoncreate(Bundle)oftypeHelloWorldmustoverrideorimplementasupertypemethod,
  以確保你正確重寫onCreate方法。(因為oncreate應該為onCreate)
  而如果你不加@Override,則編譯器將不會檢測出錯誤,而是會認為你新定義了一個方法oncreate。