我想知道在构造函数问题中泄漏这个是否应用于此实例,因为我相信构造函数必须调用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.");
}
}
答案 0 :(得分:3)
我认为构造函数中存在泄漏。您在对象的完整初始化之前传递“this”。
答案 1 :(得分:1)
如果您的程序是多线程的,那么构造函数中的this
泄漏可能会成为一个问题。你将它赋予exitItem,它可以在构造函数完成之前从另一个线程调用actionPerformed()。这是不行。它可能会严重破坏你的程序,特别是如果你在图片中添加子类。
创建一个init()方法和一个工厂方法:
public class StaffManager {
public static StaffManager create() {
StaffManager staffManager = new StaffManager();
staffManager.init();
return staffManager;
}
private StaffManager() {
}
private void init() {
// Add listeners here.
}
}
编辑:因为Swing对象总是在事件派发线程上创建,所以泄漏this
在这种情况下不会有任何影响。不过我不喜欢这样做。