2009-10-24 65 views

回答

2

您認爲@deprecated僅在編譯階段(IDE,編譯器)感興趣,但對於需要該信息的映像檢測場景而言,這不是一個延伸。

例如,IDE可以通知您已棄用方法的呼叫站點數量,但您將如何確定應用程序在棄用方法中所花費的時間百分比?

+2

RetentionPolicy.Class就足夠了。 – Jorn 2010-09-17 13:56:12

1

想象一下,使用不建議的方法編譯MyClass.class。如果您的@Deprecated註釋丟失了,當您從另一個類調用這些方法時,IDE或編譯器無法警告您。

+4

RetentionPolicy.Class就足夠了。 – meriton 2009-10-24 18:41:47

+0

嗯,那是真的...... – sinuhepop 2009-10-28 17:07:18

1

一個人的運行時間是另一個人的設計時間,例如,編寫使用API​​的代碼時。

+0

呃...你是怎麼意思的?當我使用API​​時,我不通過調試器訪問該API。我使用那個api的類文件,但是由RetentionPolicy.Class覆蓋。 – meriton 2009-10-24 18:51:07

+0

例如,使用IDE調色板中的GUI組件並將它們放在窗體上時,將運行該代碼。 – JRL 2009-10-24 18:58:21

1

很好的問題,我正在想出一個令人信服的場景。我得到的是我可以想象一個使用類加載器的應用程序,它不允許使用已棄用的代碼。這將需要RetentionPolicy.RUNTIME

這就是我的一切......

1

夫婦實際用途浮現在腦海:

隨着Velocity,你可以有一個自定義Uberspector該服務將來自Velocity模板實際調用任何過時的方法和然後通過閱讀日誌,你可以看到方法的使用位置,你可以去編輯它。

隨着Wicket,你可以有哪些不允許實例基礎上,.class內容有任何類,所以它可能是可能使防止@Deprecated類的實例化的系統,如果你不是一個管理員的安全策略。

+0

關於這兩點,仍然可以在編譯時檢查它們。依賴檢查應該做的竅門,不知道如果我明白你上面說的 – Ravisha 2015-04-02 09:34:50

4

有一些框架和工具可以實例化對象以使用它們。

例如,許多JavaBean UI編輯器創建bean的實例並在用戶操縱正在設計的UI時與它們交互。

使@Deprecated註解在運行時可用,允許諸如此類的工具爲用戶標記棄用的方法,事件和屬性。

相關問題