我收到错误“从内部类内部访问局部变量框;需要声明为final”。看起来不错,但我并不真正认为这是最佳解决方案,因此我希望也许有人可以帮助我。这是我的代码:
public void showPublisherBox(JComboBox box) {
if (publisherBox == null) {
publisherBox = new AddPublisherForm();
publisherBox.setLocationRelativeTo(this);
}
publisherBox.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
this.populatePublishers(box);
}
private void populatePublishers(JComboBox box){
box.setModel(db.getPublishers());
}
});
publisherBox.setVisible(true);
}
Publisher表单只是一个新的JFrame,它会打开并接收一些信息,并且当它关闭时,我希望通过从db.getPublishers()方法设置模型来重新填充JComboBox。
因此,有没有更好的方法来做我在这里要做的事情,还是我必须将某些内容声明为final?
谢谢
最佳答案
由于您没有在外部代码中修改box
,因此使用final
正是解决此问题的正确方法。对您自己(和对编译器)的保证是box
的值在封闭范围内不会改变。编译器会告诉您是否违反了 promise 。
使用final
没有编译时间或运行时成本。