Подтвердить что ты не робот

Должен ли я беспокоиться о утечке указателя "this" в Swing?

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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