爲什麼在運行時有人想知道某個方法已被棄用?有些人能爲我提供一些例子嗎?爲什麼@deprecated的RetentionPolicy是RUNTIME?
回答
您認爲@deprecated僅在編譯階段(IDE,編譯器)感興趣,但對於需要該信息的映像檢測場景而言,這不是一個延伸。
例如,IDE可以通知您已棄用方法的呼叫站點數量,但您將如何確定應用程序在棄用方法中所花費的時間百分比?
很好的問題,我正在想出一個令人信服的場景。我得到的是我可以想象一個使用類加載器的應用程序,它不允許使用已棄用的代碼。這將需要RetentionPolicy.RUNTIME
。
這就是我的一切......
夫婦實際用途浮現在腦海:
隨着Velocity,你可以有一個自定義Uberspector該服務將來自Velocity模板實際調用任何過時的方法和然後通過閱讀日誌,你可以看到方法的使用位置,你可以去編輯它。
隨着Wicket,你可以有哪些不允許實例基礎上,.class
內容有任何類,所以它可能是可能使防止@Deprecated
類的實例化的系統,如果你不是一個管理員的安全策略。
關於這兩點,仍然可以在編譯時檢查它們。依賴檢查應該做的竅門,不知道如果我明白你上面說的 – Ravisha 2015-04-02 09:34:50
有一些框架和工具可以實例化對象以使用它們。
例如,許多JavaBean UI編輯器創建bean的實例並在用戶操縱正在設計的UI時與它們交互。
使@Deprecated註解在運行時可用,允許諸如此類的工具爲用戶標記棄用的方法,事件和屬性。
- 1. 什麼是@deprecated in java的反向
- 2. 什麼是Delphi XE2 VCL Runtime BPL?
- 3. 爲什麼@FunctionalInterface具有RUNTIME保留?
- 4. 爲什麼所有的Angular 2.0 DI API都被標記爲@deprecated?
- 5. @deprecated vs @Deprecated
- 6. 什麼是@Deprecated在Java中的.NET等價物?
- 7. 爲什麼不是@Deprecated註釋觸發有關方法的編譯器警告?
- 8. 爲什麼@Deprecated在這裏不起作用?
- 9. 反射庫是否忽略RetentionPolicy
- 10. 什麼是採取MS Access Runtime到Mac最經濟的方法?
- 11. 什麼是babelRelayPlugin,transform-runtime,passPerPreset呢? (巴貝爾+的WebPack配置)
- 12. Go語言中runtime-gdb.py的作用是什麼?
- 13. Java - 爲什麼System和Runtime類具有相同的方法?
- 14. mysql_ deprecated
- 15. Specflow插件(Runtime,Generator,Runtime/Generator)的三種類型有什麼區別?
- 16. runtime - 在class_addMethod中,這個「@@:」是什麼意思?
- 17. 爲什麼這個RELEASE不會產生RUNTIME ERROR?
- 18. 爲什麼在Visual Studio 2010中安裝了F#Runtime?
- 19. Java Runtime exec()行爲
- 20. 在接口上使用@Deprecated表示法有什麼好處?
- 21. @Deprecated對方法參數和局部變量有什麼意義?
- 22. Titanium.Platform.id DEPRECATED in 1.8.0
- 23. actionbar setnavigationmode deprecated
- 24. Hibernate:MethodConstraintViolation is deprecated
- 25. 道場DEPRECATED dojo.moduleUrl
- 26. Pear Error Deprecated
- 27. Titanium.Ti.Media.VideoPlayer.movieControlMode DEPRECATED
- 28. web.config> configuration> runtime> assemblyBinding中生成條目的含義/原因是什麼?
- 29. 「Apache Portable Runtime的關閉失敗」日誌消息是什麼意思?
- 30. 爲什麼unix和Java RunTime顯示的統計信息有差異
RetentionPolicy.Class就足夠了。 – Jorn 2010-09-17 13:56:12