为什么sun.reflect.Reflection等类不是公共API?

时间:2016-09-05 16:56:23

标签: java reflection

在我作为Java程序员的实践中,我会发现sun.reflect.Reflectionsun.misc.Unsafe等类提供的方法在某些情况下非常有用,例如编写调用者敏感代码的能力。但是,强烈建议不要使用应用程序代码使用sun.reflect和相关软件包,因为它不是公共API。将此功能添加到Java标准库的原因是什么?有时候我会觉得Java API开发人员不信任程序员考虑这些方法的潜在风险的能力,并有意识地决定他们的使用何时是合理的。

注意:我的问题是重复使用Sun的专有Java类是不好的做法?'那里的问题是,为什么不应该使用这些类。我的问题是为什么它们没有被添加到API中,这是使用的良好实践'。

1 个答案:

答案 0 :(得分:0)

这不仅是因为他们不信任开发者。私有API可以自由更改,因为像你我这样的开发人员编写的代码依赖于他们以明确指定的方式运行。 Java具有强大的向后兼容性概念,因此公共API不会在破解方式上发生变化,但是使用JDK的人员可以修改和增强私有API,而无需担心破坏现有系统。这使您可以相对安全地更新生产系统上的Java版本,而不必仅仅因为您在1.5中编写程序而让我们说安装1.5。