我在JDK 7文檔中找不到有關sun.*
包的任何參考。 是否已棄用?但是,什麼是替代品?太陽發生了什麼變化*包
例如:sun.reflect.*;
已被棄用,那麼現在有哪些選項?
如果有人可以發佈已棄用的軟件包和可用的新選項,那將會很棒。
注:我成功地通過設置訪問規則來使用它們。
這是什麼意思?
我在JDK 7文檔中找不到有關sun.*
包的任何參考。 是否已棄用?但是,什麼是替代品?太陽發生了什麼變化*包
例如:sun.reflect.*;
已被棄用,那麼現在有哪些選項?
如果有人可以發佈已棄用的軟件包和可用的新選項,那將會很棒。
注:我成功地通過設置訪問規則來使用它們。
這是什麼意思?
您必須使用java.lang.reflect
包進行反射。
請參見:http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-summary.html
的sun.reflect
包不會被棄用。它們僅供JDK內部使用。 Oracle(以前稱爲Sun)不記錄內部軟件包,也不保證它們將存在於所有Java平臺實現中(任何供應商都可以實現Java平臺),也不保證它們在所有版本的標準Oracle Java平臺中都是相同的實現。
Oracle explains this on their website:
的
sun.*
包不支持的,公共接口的一部分。直接調用
sun.*
包的Java程序不是 保證可以在所有Java兼容的平臺上工作。實際上,這樣的一個 程序不能保證即使在相同的 平臺的未來版本上也能正常工作。
還有其他包嗎?類似的命運? – John
在我的答案中鏈接的頁面上還提到:「Java平臺標準版API規範中記錄的java。*,javax。*和org。*包構成官方支持的公共接口。」因此不支持這3個包之外的任何內容,包括「com.sun。*」。 –
以下是來自OpenJDK 1.7源代碼的ReflectionFactory的Javadoc:http://www.docjar.com/docs/api/sun/reflect/ReflectionFactory.html –
你爲什麼需要它們?你是否試圖實現調用者敏感的行爲? – Antimony
據我所知,'sun。*'軟件包從未正式發佈,所以如果你使用它們,它們可能在不同的版本中有所不同。 – rm5248