在java或Android中有@Override註釋。這是什麼意思?我發現它用於方法是從子類或繼承的接口的方法,我想進一步知道和其他是@SuppressWarnings它也Anonation,如果是的Java多少使用的annonation和爲此目的。爲什麼@Override需要在Java或Android?
回答
這個問題也回答了這裏,而且相當簡潔: Android @Override usage
這是一個註釋,你可以用它來告訴你打算是有註釋是一個覆蓋的方法編譯器和您的IDE超類方法。他們在出現錯誤時會有警告/錯誤,例如,如果您打算重寫某個方法但拼寫錯誤,如果註釋位於IDE中,或者編譯器會告訴您它實際上不覆蓋超類方法,因此您可以確定原因並更正拼寫錯誤。
這對於Android應用程序和活動來說更爲重要,例如,所有調用都將基於活動生命週期 - 並且如果您沒有正確覆蓋生命週期方法,則它們永遠不會被框架調用。一切都會很好地編譯,但你的應用程序不會按照你的意圖工作。如果添加註釋,則會出現錯誤。
換句話說,如果添加@覆蓋這可以幫助你做出確保你是真的覆蓋現有的方法!相當有用。
準確,強調的那樣,註釋實際上並不在運行時做任何事情,它是誰的閱讀代碼的幫助。如果簽名與父項相同,該方法將被覆蓋或不註釋。 – stivlo 2011-12-17 15:09:32
@stivlo:沒有。如果設置了Override,並且該方法不會覆蓋任何內容,則不會有任何運行時,因爲它會阻止該類進行編譯。這就是爲什麼註釋是有用的:它告訴編譯器開發人員的意圖是重寫一個方法。如果編譯器檢測到沒有重寫,它將拒絕編譯。 – 2011-12-17 15:33:10
註釋是否有用於防止重複的方法相同? – 2013-05-27 10:02:42
覆蓋意味着您正在更改從父類繼承的方法的行爲,而不更改簽名。 @Override註釋用於標記此。它與多態的概念緊密相關。例如:
public class A {
public void foo() {
System.out.println("A");
}
}
public class B extends A {
@Override
public void foo() { // I want to change the way foo behaves
System.out.println("B"); // I want to print B instead of A
}
}
public static void main(String[] args) {
A a = new A();
a.foo(); // prints A
A b = new B(); // I can use type B because it extends A
b.foo(); // I have overriden foo so it prints B now
}
行爲意味着我不能改變參數和返回類型 – 2011-12-17 15:00:03
@Mayur Patel:是的,只有方法內的代碼。 – Tudor 2011-12-17 15:01:27
Thnx這麼多的規格 – 2011-12-17 15:03:11
只是爲了確保您實際上在編譯時覆蓋它,並提高可讀性
例如:
class Animal{
public void eat(Food food){
}
}
class Person extends Animal {
@Override
public void eat(String food){
}
}
這會給你編譯因爲你不是實際上覆蓋它(參見食物的類型)
我們可以覆蓋當前類方法? – 2011-12-17 15:00:35
給我一個例子你是什麼意思的當前類方法 – 2011-12-17 15:01:56
我知道,但我刪除它什麼是prblm?其跌幅可讀性 – 2011-12-17 15:04:05
@override其註釋,即元數據在jdk 1.6中引入。如果你在override方法之前不寫它,它不會有什麼區別,但它只是用來增加編譯器的可讀性。
1.5中引入了包含'@ Override'的註解。目的是確保你實際上覆蓋了你認爲自己的東西,而不是「增加編譯器的可讀性」。 – 2011-12-17 15:07:45
標記您確實實施或更改方法。就像在編譯時檢查一樣。例如,如果您要實施@Override public void equals(final Car pObject);
而不是@Override public void equals(final Object pObject);
,則會出現錯誤。
除了其他詳細信息,還有其他詳細信息:@Override和@SuppressWarnings來自Java規範。
這聽起來像你的問題是關於一般註釋更多,所以我會回答。註釋提供有關正在註釋的項目的額外元數據。這允許其他代碼使用該信息來決定如何運行。 More detailed description。語言中有大量的內容,但你可以自己寫。你給
兩個例子告訴它編譯代碼編譯器的額外信息。當它看到@Override
時,它會檢查以確保該方法實際上覆蓋了一個方法。當它看到@SuppressWarnings
時,它知道它應該忽略代碼塊中存在的給定類型的編譯器警告。
他們可以在戶外使用的編譯器爲好。有許多庫可以註釋一個類對象,並使用該元數據構建數據庫或解析xml文件。
- 1. 在Java中@Override是什麼?
- 2. 在java中有什麼「@Override」?
- 3. 爲什麼android需要jvm
- 4. extjs combo override:爲什麼要定義this.addevents()?
- 5. 爲什麼在java中需要接口?
- 6. 爲什麼需要[super loadView]或[super viewDidLoad]?
- 7. 爲什麼我們需要calloc(或malloc)?
- 8. 爲什麼你需要Gitosis或Gitolite?
- 9. 爲什麼我需要jdbc與sqlite java?
- 10. 爲什麼Java發送需要Thread.Sleep
- 11. 爲什麼我們需要Java NIO Selector?
- 12. Java:爲什麼需要包裝類?
- 13. 爲什麼JAVA需要構造函數?
- 14. 爲什麼Java中需要易失性
- 15. 我需要爲Java RandomUtils包含什麼?
- 16. 爲什麼需要Java線程?
- 17. 爲什麼需要
- 18. 爲什麼需要「{} \」?
- 19. Android爲什麼需要虛擬機(DVM)?
- 20. Gracenote Android - 爲什麼需要ACCESS_FINE_LOCATION?
- 21. 爲什麼android:描述需要?
- 22. 爲什麼PocketSphinx Android演示需要cygwin
- 23. 爲什麼Android SDK需要JDK?
- 24. Android/Tensorflow:爲什麼需要測試RandomShuffleQueue?
- 25. 爲什麼java需要Class.forName或動態加載?
- 26. 爲什麼在Django中需要基本或摘要認證?
- 27. 郵件服務器,爲什麼需要在smtp.mail.com或imap.mail.com或mail.mail.com
- 28. 爲什麼或什麼時候應用需要服務器?
- 29. 爲什麼我需要在Java中爲此數組添加+1?
- 30. 爲什麼在Android Studio中清理需要這麼長時間
這是一個好問題,而是......瑣碎的查找。 – 2011-12-17 15:08:38