Можно создать дубликат:
“this” reference escaping during construction?Течь этот конструктор
Я хотел бы знать, является ли утечка этого в вопросе конструктора применяется на этом примере, так как я считаю, что конструктор должен вызывать setJMenuBar() для завершения его строительства, здесь применяется класс:
public class StaffManagerMainWindow extends JFrame implements ActionListener {
public StaffManagerMainWindow(String title, Image icon) throws HeadlessException {
...
setJMenuBar();
}
private void setJMenuBar() {
...
exitItem.addActionListener(this);
...
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Да, это утечки. Почему ваш 'ActionListener' не является приватным? – trashgod
Если я переведу весь код из метода setJMenuBar() внутри конструктора, тогда я получаю предупреждающее сообщение «утечка этого в конструкторе», но для моего случая компилятор ничего не жалует – MinhHoang
Это просто означает, что статический анализ, выполняемый по коду, ограничен - - он просто проверяет, передаете ли вы 'this' явно в вызове метода. –