我使用eclipse,當我使用快捷方式來生成覆蓋實現,那裏有一個覆蓋註釋,我使用JDK 6,這是沒問題的,但在JDK 5下,這個註釋會導致錯誤,所以我想問,如果這個註釋是完全無用的?編譯器會使用這個註釋來做某種優化嗎?IDE的自動生成的@override註釋有什麼好處?
4
A
回答
3
正如其他人所指出的那樣,@Override
註釋是一個真正的編譯器指令,指示javac
尖叫如果與@Override
註釋的方法實際上並不在它的父類覆蓋的方法(例如,你實際上是因爲你決定改變方法簽名或者拼錯方法名稱)。
在JDK 5,直接實現從界面的方法是不考慮重寫該方法,如果標註了@Override
被認爲是一個錯誤。
在某種程度上,由於用戶的反饋,這是一個非常混亂的行爲,JDK 6改變這種行爲,並認爲這是正確標註你從一個接口@Override
實現的方法。
3
該註釋非常有價值,因爲它會使新方法確實或不覆蓋父類的方法。例如,你可能會認爲你重寫了,但是你拼錯了方法名(或者重寫的方法的簽名在此期間改變了)。
3
這不是無用的。它有助於讀者理解代碼和作者以避免錯誤。
也就是說,JDK 5和JDK 6的行爲與@Override
不同,因此如果它們導致問題,請將其刪除。他們絕對沒有功能上的差異。
4
它的目的是讓編譯器能夠告訴你何時該方法實際上並不覆蓋超類方法。例如,假設拼錯了名稱,編譯器會提示您該方法沒有覆蓋任何內容,因此您將能夠捕獲錯誤,而不是運行程序,也不理解爲什麼您的方法永遠不會獲取調用。
2
針對您將要部署到的JDK編譯代碼。
問題在於,註解對於從版本6中的接口中定義的基類和方法重寫方法有效,但僅針對版本5中的重寫方法。因此,在接口中定義的方法上的@override將導致您的在JDK錯誤5
相關問題
- 1. Python函數註釋有什麼好處?
- 2. @Override註釋的用途是什麼?
- 3. 自動生成註釋
- 4. @Override註釋
- 5. @override註釋
- 6. 它爲什麼不自動在Eclipse中生成方法註釋?
- 7. 如何自動生成的類註釋春天JMX註釋
- 8. 爲什麼Eclipse在「生成委託方法」重構中添加@Override註釋?
- 9. 爲什麼IDE將我的類標記爲自動生成的?
- 10. @Override註釋混淆
- 11. @Override註釋問題
- 12. 在Eclipse中自動生成Javadoc註釋?
- 13. 如何刪除NetBeans中的所有自動生成的註釋
- 14. 什麼是@Override註釋的點在Java 1.6的
- 15. 從xml動態生成java bean類有什麼好處?
- 16. 什麼是@Override批註
- 17. 自動變量的好處是什麼?
- 18. 關於在活動@Override註釋回調
- 19. Eclipse不喜歡@Override註釋
- 20. 保持生成的時間戳有什麼好處嗎?
- 21. C#項目有自動生成的類,但是什麼自動生成它們?
- 22. 2010年初有什麼好的Scala IDE?
- 23. 通過註釋動態生成注射
- 24. 什麼IDE是好的rubyonrails
- 25. 爲什麼javac在@Override註釋上失敗
- 26. 爲什麼Maven不能構建解析@Override註釋?
- 27. 什麼是gcc生成的彙編註釋中的batmp和%fsp?
- 28. Vim的自動生成不需要的JS註釋塊
- 29. JAXB生成沒有註釋的java類
- 30. 關於@Override註釋的使用
是的,僅當實現接口方法時纔會出現該錯誤。 – Sawyer 2010-03-15 14:51:58