我想將JRE提供的某些方法的使用標記爲不贊成使用。我該怎麼做呢?棄用Java JRE方法
回答
你不能。只有您控制的代碼纔可以添加@Deprecated
註釋。任何對字節碼進行反向工程的嘗試都將導致不可移植的JRE
。這與Java的寫法相反,運行在任何地方方法論。
在什麼情況下?你的意思是你希望能夠輕鬆配置你的IDE來禁止使用某些API?或者你是否試圖向世界口授你禁止的API?還是你想在運行時做些什麼?
如果第一種情況,Eclipse和我假設其他IDE,則允許將任何API標記爲禁止,不鼓勵或在包或類級別訪問。
如果你的意思是第二,當然你不能。那會很愚蠢。
如果您試圖禁止在運行時調用某些方法,則可以配置安全策略,以防止從指定位置加載的代碼能夠調用與SecurityManager
(如果已安裝)進行檢查的特定方法。
您不能棄用JRE方法,但可以向構建系統添加警告甚至編譯錯誤,即使用AspectJ或禁止在IDE中使用給定的方法。
例如在Eclipse: 轉到項目屬性 - > Java編譯器 - >錯誤警告,然後啓用項目的具體設置,展開已過時和restrited的API類 「禁引用(接取規則)」
很明顯,您可以通過添加@Deprecated
註釋來設置或覆蓋類,但這不是一個乾淨的解決方案。
只有當您構建自己的JRE時,您才能做到這一點!在這種情況下,只需在相應的代碼塊上添加@Deprecated
!但是,如果您使用的是Oracle的JRE,那麼您無法這樣做!
如果您自己棄用API,那麼您沒有JRE。也就是說,你不能稱之爲Java。 – erickson
是的,你是對的!這是答案的道德! –
將這些限制添加到您的編碼準則中,並作爲您的代碼審閱過程的一部分執行。
您可以編譯自己的類的版本並將其添加到引導類路徑或lib/ext目錄。 http://docs.oracle.com/javase/tutorial/ext/basics/install.html這將改變JDK和JRE。
事實上,你可以刪除它進行編譯,如果使用它,程序將不會編譯。
Snihalani:只要讓我得到這個直...
你想以「棄用的JRE方法」到「確保人們不要使用Java的實現,並使用我的實現從現在開始「。 ?首先,你不能改變JRE中的任何東西,你也不能這麼做,它是Oracle的財產。如果您想要解決問題,那麼您可以在本地更改某些內容,但這只是在您本地的JRE中,而不是可以從Oracle網頁下載的。
接下來,沒有人有你的實現,所以我們怎麼能夠使用它呢?Oracle提供的實現完全可以做到他們應該做的事情,並且當發現缺陷/ bug/...時,它將被糾正或由新方法取代(此時原始方法將被棄用)。
但是,最讓我擔心的是,你會去改變實現與你想出的東西。讓我想起很多網絡釣魚和這類技術,讓我們運行您的代碼,但不知道它的作用,甚至不知道我們正在運行您的代碼。畢竟,如果您可以訪問原始代碼並「構建」JRE,那麼將會如何阻止您改變原始方法中的代碼?
棄用是筆者要說的方式: 「是啊......我只是爲了不改變現有應用程序的行爲這樣做,在過去,但似乎有與方法問題 。使用此方法,我不會更改此方法,而是將其標記爲已棄用,並添加解決此問題的方法「。
你不是作者,所以不能決定這些方法是否按照他們應該的方式工作。
- 1. 更新棄用HttpClient的方法的Java
- 2. 棄用方法addPreferencesFromResources
- 3. GCD棄用方法
- 4. java棄用
- 5. Unity IoC - 棄用方法
- 6. 方法光標被棄用
- 7. JasperReport中的棄用方法
- 8. 的UITableViewCell:initWithFrame:方法reuseIdentifier棄用
- 9. iOS中的棄用方法
- 10. is window.requestFileSystem方法已棄用?
- 11. BitmapFactory.Options「inPurgeable」方法棄用
- 12. load()方法已棄用?
- 13. Jetty SslConnector的棄用方法
- 14. 你如何放棄替代JRE課程?
- 15. 棄用Java 1.6的
- 16. 如何標記棄用API中使用的java私有方法
- 17. Java - 已棄用的方法 - 該怎麼辦?
- 18. 當我從C++調用JNI時,Java方法被拋棄了
- 19. 無法卸載Java JRE 1.7 32位
- 20. 安裝java jre 5.0
- 21. 棄用未使用的虛擬方法
- 22. 「成功」方法已被棄用。使用`then`方法
- 23. 檢查方法是否被棄用
- 24. 棄用循環方法,等同於'didRotateFromInterfaceOrientation'?
- 25. 如何擺脫棄用的方法?
- 26. 棄用-XDatatypeContext的替代方法?
- 27. 如何替換棄用的方法splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
- 28. WebSphere:替代已棄用的方法WSJdbcUtil.getNativeConnection
- 29. xcode7/swift 2.0中的棄用方法
- 30. 如何替換棄用的方法Mockit.setUpMock?
你爲什麼要這麼做? –
確保人們從現在開始不使用java的實現並使用我的實現。 – snihalani
這是一個X-Y問題嗎? – erickson