我应该担心在Swing中泄漏"this"指针吗?

The*_*ock 19 java swing

我最近(在基于C#的类中)了解到,在对象的构造函数中注册事件侦听器有时会被认为是危险的,因为在对象完全初始化之前,这些事件侦听器会被赋予对该对象的引用,并且可能(至少在理论上) )在构造完成之前尝试访问该对象.

根据我的理解,在构造完成之前访问对象可能会导致崩溃,至少在某些语言中...如果它不会导致崩溃,那么我们只关心注册发生在最后,所以我们的对象已经准备好了在我们注册听众时接收活动.

我现在开始使用新的Swing GUI,并注意到构建Swing GUI时我的标准做法是在构造函数中连接事件监听器.

在构造函数完成之前,似乎不太可能调用Swing组件的事件侦听器,因为它们可能在组件被添加到可见的Swing容器之前没有连线,这只能在构造之后发生.

那么,在Swing中工作时,有没有真正的理由避免这种反模式?如果是这样,最简单的方法是什么?

Pau*_*icz 2

只要您在 UI 线程中分配事件侦听器就可以了。