我在ChangeListener
的构造函数中向JTabbedPane
添加JFrame
。在stateChanged
方法内部,我有一个带有在构造函数中接收的参数的方法,但它必须是final
。有可能避免这种情况吗?
public PerfilPaciente(int operation, Patient patient) {
tabPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
switch (tabPane.getSelectedIndex()) {
case 1:
loadDates(patient); // here is the problem
break;
}
}
});
最佳答案
匿名类中最多使用Java 7(含)变量,必须明确声明为final。在您的情况下:
public PerfilPaciente(int operation, final Patient patient) {
在Java 8中,不再需要此变量,该变量仅需有效地为final(即,永不在封闭方法中对其进行重新分配)。因此,使用Java 8可以编译代码。
关于java - 是否有可能避免将一个对象声明为final?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22566488/