Стоит ли беспокоиться об утечке указателя this в Swing? - PullRequest
19 голосов
/ 08 февраля 2012

Недавно я узнал (в классе, основанном на C #), что иногда считается опасным регистрировать прослушиватели событий в конструкторе объекта, потому что этим прослушивателям событий дается ссылка на этот объект до полной инициализации объекта, и он может (припо крайней мере в теории) попытка получить доступ к объекту до завершения строительства.

Из того, что я понимаю, доступ к объекту до завершения строительства может вызвать сбой, по крайней мере, в некоторых языках ... если это не таквызвать сбой, тогда нам нужно только, чтобы регистрация происходила последней, поэтому наш объект готов к приему событий, когда мы регистрируем его слушателей.

Я сейчас запускаю новый графический интерфейс Swing и заметил, что мойСтандартной практикой при создании Swing GUI является подключение прослушивателей событий в конструкторе.

Маловероятно, что прослушиватели событий компонентов Swing будут вызваны до завершения конструктора, так как они, предположительно, не подключены докомпонент добавленк видимому контейнеру Swing, что может произойти только после сборки.

Итак, есть ли реальная причина избегать этого анти-паттерна при работе в Swing?И если да, то как проще всего это сделать?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Пока вы назначаете слушателей событий в потоке пользовательского интерфейса, все будет в порядке.

0 голосов
/ 08 февраля 2012

Конечно, конструкторы в отраслевом стандарте программирования на Swing часто бывают слишком большими, и наследование не нужно. Пока вы разумны и ничего не запускаете (вызываете события) до завершения строительства, все будет в порядке. (И, очевидно, придерживайтесь AWT EDT.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...