【问题标题】:what happened to sun.* packagessun.* 包怎么了
【发布时间】:2014-03-31 14:24:45
【问题描述】:

我在 JDK 7 文档中没有找到任何关于 sun.* 包的参考资料。 是否已弃用。但那有什么替代品呢?

例如:sun.reflect.*; 已弃用,那么现在有哪些选择?

如果有人可以发布已弃用的软件包和可用的新选项,那就太好了。

注意:我通过设置所有可用的访问规则成功地使用了它们。

这是什么意思?

【问题讨论】:

  • 您为什么需要它们?您是否尝试实现调用者敏感行为?
  • 据我所知,sun.* 软件包从未正式发布过,因此如果您使用它们,它们可能会因版本而异。

标签: java


【解决方案1】:

您必须使用 java.lang.reflect 包进行反射。

见:http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-summary.html

【讨论】:

  • 我没有看到 sun.reflect.ReflectionFactory 的替代品。
  • 问题是,你想用这个ReflectionFactory做什么你不能用java.lang.reflect包之外的东西?
【解决方案2】:

sun.reflect 软件包未被弃用。它们仅供 JDK 内部使用。 Oracle(前身为 Sun)不记录内部包,也不保证它们将存在于所有 Java 平台实现中(任何供应商都可以实现 Java 平台),也不保证它们在标准 Oracle Java 平台的所有版本中都相同实施。

Oracle explains this on their website:

sun.* 包不是受支持的公共接口的一部分。

直接调用 sun.* 包的 Java 程序不是 保证可以在所有与 Java 兼容的平台上工作。事实上,这样一个 即使在相同的未来版本中,也不保证程序可以正常工作 平台。

【讨论】:

  • 还有其他的包吗?命运相似?
  • 在我的回答链接的页面上,它还说:“Java 平台标准版 API 规范中记录的 java.*、javax.* 和 org.* 包构成了官方的、受支持的、公共的界面。”所以不支持这 3 个包之外的任何东西,包括“com.sun.*”。
  • 这是来自 OpenJDK 1.7 源代码的 ReflectionFactory 的 Javadoc:docjar.com/docs/api/sun/reflect/ReflectionFactory.html
  • 你想对不属于普通反射 API 的 ReflectionFactory 做什么?
  • 你为什么不这么说? ;-) 当你对反射感到厌烦时,看看sun.misc.Unsafe ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 2015-06-29
  • 2012-09-05
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多