Android @Override详解
轉(zhuǎn)載自 ?Android @Override詳解
Android的開(kāi)發(fā)者對(duì)@Override肯定是非常熟悉,不管是自己的代碼中還是書(shū)上都會(huì)出現(xiàn),但是他是什么意思呢?如下:
@Override是偽代碼,表示重寫(xiě)(當(dāng)然不寫(xiě)也可以),不過(guò)寫(xiě)上有如下好處:
??? 1、可以當(dāng)注釋用,方便閱讀
??? 2、編譯器可以給你驗(yàn)證@Override下面的方法名是否是你父類(lèi)中所有的,如果沒(méi)有則報(bào)錯(cuò)比如你如果沒(méi)寫(xiě)@Override而你下面的方法名又寫(xiě)錯(cuò)了,這時(shí)你的編譯器是可以通過(guò)的(它以為這個(gè)方法是你的子類(lèi)中自己增加的方法)
example:
在重寫(xiě)父類(lèi)的onCreate時(shí),在方法前面加上@Override系統(tǒng)可以幫你檢查方法的正確性。例如:
public void onCreate(BundlesavedInstanceState){…….}
這種寫(xiě)法是正確的,如果你寫(xiě)成
public void oncreate(BundlesavedInstanceState){…….}
這樣編譯器會(huì)報(bào)如下錯(cuò)誤——
The method oncreate(Bundle) of type HelloWorld must override or implement a super type method,
以確保你正確重寫(xiě)onCreate方法。(因?yàn)閛ncreate應(yīng)該為onCreate)
而如果你不加@Override,則編譯器將不會(huì)檢測(cè)出錯(cuò)誤,而是會(huì)認(rèn)為你新定義了一個(gè)方法oncreate。
現(xiàn)象:
... 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 can be annotated with @Override, but in Java 1.5 can only be applied to methods overriding a superclass method).
就是說(shuō)Java 1.5的編譯器默認(rèn)對(duì)父類(lèi)的方法進(jìn)行覆蓋,采用@Override進(jìn)行說(shuō)明;但1.6已經(jīng)擴(kuò)展到對(duì)接口的方法;所以如果還是以Java 1.5的編譯器來(lái)編譯的話,會(huì)出現(xiàn)錯(cuò)誤。
解決方案:
Go to your project/ide preferences and set the java compiler level to 1.6 and also make sure you select JRE 1.6 to execute your program from eclipse.
java的編譯器是1.6版本的,選擇編譯級(jí)別為1.6,但重要的一點(diǎn)是,選擇build的android庫(kù)是1.5的即可,生成的apk程序是可以在1.5內(nèi)核上跑起來(lái)。
總的來(lái)講: android sdk的版本與Java JRE的版本可以配置起來(lái)用,兩者關(guān)系應(yīng)該是疏松的,有高人可以指點(diǎn)錯(cuò)誤。
?
1、Android里有一些系統(tǒng)自動(dòng)調(diào)用的回調(diào)函數(shù)CallbackMethods,如果寫(xiě)的程序運(yùn)行無(wú)錯(cuò),但是就是沒(méi)有該有的反應(yīng),那就可能是覆寫(xiě)回調(diào)函數(shù)時(shí)沒(méi)有加@Override且函數(shù)名寫(xiě)錯(cuò)了。2、覆寫(xiě)的函數(shù)最好 加上@Override。3、可以在Source-> Override/Implement Methods下自動(dòng)添加覆寫(xiě)和接口函數(shù),可以確保函數(shù)名拼寫(xiě)正確。
總結(jié)
以上是生活随笔為你收集整理的Android @Override详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: class jdk.internal.l
- 下一篇: android sina oauth2.