Java 什么是addNotify();?

Java 什么是addNotify();?,java,methods,overriding,Java,Methods,Overriding,我试图找到一个外行对addNotify()的定义,但我用谷歌找不到任何答案 据我所知,在我的类中重写addNotify()时,我应该调用super.addNotify() 然后再做其他的事情 我的问题是,addNotify()是否自动运行?它的用途是什么,当我重写它时会发生什么,而且,为什么我要重写这个方法 Thank's.是java.awt.Component类中的一个方法。API中规定的该方法的目的: 通过将此组件连接到本机屏幕,使其可显示 资源。此方法由工具箱在内部调用,应该 不能由程序直

我试图找到一个外行对
addNotify()
的定义,但我用谷歌找不到任何答案

据我所知,在我的类中重写
addNotify()
时,我应该调用
super.addNotify()
然后再做其他的事情

我的问题是,
addNotify()
是否自动运行?它的用途是什么,当我重写它时会发生什么,而且,为什么我要重写这个方法

Thank's.

java.awt.Component
类中的一个方法。API中规定的该方法的目的:

通过将此组件连接到本机屏幕,使其可显示 资源。此方法由工具箱在内部调用,应该 不能由程序直接调用

方法
addNotify()/removeNotify()
是AWT提供的唯一钩子,在这些钩子中,我们可以正确地销毁和重新创建OpenGL上下文,因为底层的本机小部件正在被销毁。
addNotify()
被低级组件用来与操作系统上的底层对等方进行交互,从而真正发生一些事情,而不仅仅是屏幕上的漂亮图片
最好避免使用此方法。

我的问题是,addNotify()是否自动运行

对。确切的时间和地点取决于AWT实现的内部结构

它的目的是什么

如中所述。它是连接AWT世界和本机窗口世界的“胶水”的一部分,是非常低级的东西。(我故意说的是高层次和含糊不清的。如果你想知道细节,请下载并阅读OpenJDK源代码。)

当我覆盖它时会发生什么

您可能会打破AWT:-)

而且,我为什么要重写这个方法呢


我想不出一个好的理由来这么做。。。除非您试图将AWT移植到其他操作系统或其他本机窗口系统。

谢谢您的回答。我正在读这本书,它覆盖了addNotify(),但他所做的只是super.addNotify(),然后调用他创建的另一个方法,这个方法基本上启动了所有东西。他真的没什么变化。在那个例子中可以吗?@ElmedinZelenkic-如果没有看到代码,很难说。代码工作吗?
addNotify(){super.addNotify();startGame();}
基本上是什么
startGame()的作用是创建一个新线程,该线程的run方法被覆盖。基本上,它只是通过调用
newThreadName.start()激活新线程的run方法简而言之,第二种方法叫做
startGame()包含创建并启动新线程的代码。我希望这是有道理的。如果没有,谢谢你的回答,他们真的帮了大忙。@ElmedinZelenkic-我觉得“作者”实现的是一个黑客。他使用addNotify纯粹是因为它在方便的时候被调用。不推荐。。。不过,想必它是有效的。@Sohaib-我不这么认为。他可以用容器侦听器来实现这一点。