为什么不推荐使用java getPeer调用?

时间:2018-02-12 12:52:27

标签: java awt deprecated

我正在尝试找到获取重量级AWT面板支撑窗口的X ID代码的最佳方法。为什么java.awt.Component.getPeer命令被列为不推荐使用?是否涉及安全问题?

1 个答案:

答案 0 :(得分:2)

javadoc声明:

  

从JDK 1.1版开始,程序不应直接操纵同行;由boolean isDisplayable()替换。

这是设计问题而非安全问题。

事实上,从Java 9开始,getPeer()方法已被删除。因此,如果您想要一个强有力的理由不使用getPeer(),那么因为您的代码在使用Java 9时无法使用它!

如果你确实需要访问Java 9中的对等体,可以使用反射来访问package-private peer变量。但是,使用反射进入AWT实现的风险是您的代码可能会在将来的版本中(再次)中断。