Java 修改操作侦听器中的布尔值 代码: 错误:
'无法分配最终局部变量Java 修改操作侦听器中的布尔值 代码: 错误:,java,swing,if-statement,swt,Java,Swing,If Statement,Swt,'无法分配最终局部变量saveedit,因为它是在封闭类型中定义的' 问题: 我已经看到了针对类似错误的其他解决方案,但必须有一种简单的方法来实现它——可能像更早地定义某个东西或移动它一样简单 我非常感谢您的帮助。我完全同意sager89。但我想在这里补充一点,那就是 如果关键字final用于实例变量,那么final变量只能在声明时分配一次,或者您必须在每个构造函数中分配一次。我完全同意sager89。但我想在这里补充一点,那就是 如果关键字final用于实例变量,那么final变量只能在声明时
saveedit
,因为它是在封闭类型中定义的'
问题:
我已经看到了针对类似错误的其他解决方案,但必须有一种简单的方法来实现它——可能像更早地定义某个东西或移动它一样简单
我非常感谢您的帮助。我完全同意sager89。但我想在这里补充一点,那就是
如果关键字final用于实例变量,那么final变量只能在声明时分配一次,或者您必须在每个构造函数中分配一次。我完全同意sager89。但我想在这里补充一点,那就是
如果关键字final用于实例变量,那么final变量只能在声明时分配一次,或者必须在每个构造函数中分配一次。如果要在内部类中使用变量(此处为
ActionListener>),则有两种选择(关于如何使用它,请修改(变异)或访问):
将final
关键字与局部变量一起使用(对于您的情况,不建议使用关键字,因为您希望在内部类中修改变量,而不是仅访问)
使用字段VARABLE,该字段不必是最终的
(建议使用)
正如我提到的,第二种解决方案对您来说是可行的,因为您希望执行正在变异的saveedit=false;
。如果您希望在内部类中使用变量(此处ActionListener
),您有两种选择(关于如何使用它,修改(变异)或访问):
将final
关键字与局部变量一起使用(对于您的情况,不建议使用关键字,因为您希望在内部类中修改变量,而不是仅访问)
使用字段VARABLE,该字段不必是最终的
(建议使用)
正如我所提到的,第二种解决方案对您来说是可行的,因为您希望执行正在发生变化的saveedit=false;
。这个问题不是重复的,答案是任何想简单移动的人都可以
final boolean saveedit=true;
要在这些线之间插入,请执行以下操作:
final boolean saveedit = true;
btnSaveEdit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (saveedit) {
// save function
if (txtMessage.getText().length() != 0) {
message = txtMessage.getText();
}
// show popup
JOptionPane.showMessageDialog(frmEventsAndProperties,
"Your last message is: " + message, "Message",
JOptionPane.PLAIN_MESSAGE);
btnSaveEdit.setText("Edit");
txtMessage.setEnabled(false);
saveedit = false;
} else {
// edit function
}
}
});
这样,它就不会在封闭类型中定义:)这个问题不是重复的,答案是任何想简单移动的人都可以得到的
final boolean saveedit=true代码>
要在这些线之间插入,请执行以下操作:
final boolean saveedit = true;
btnSaveEdit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (saveedit) {
// save function
if (txtMessage.getText().length() != 0) {
message = txtMessage.getText();
}
// show popup
JOptionPane.showMessageDialog(frmEventsAndProperties,
"Your last message is: " + message, "Message",
JOptionPane.PLAIN_MESSAGE);
btnSaveEdit.setText("Edit");
txtMessage.setEnabled(false);
saveedit = false;
} else {
// edit function
}
}
});
这样,它就不会在封闭类型中定义:)