我有一个Foo的ArrayList,而foo有一个Bar IntegerProperty和一个String BarName。
我想要的是从侦听器访问对象Foo然后更改BarName,如:
for(String b : BarNameList){
Foo f = new Foo();
f.setBarName(b);
f.addListener(new ChangeListener<Number>(){
@SuppressWarnings("rawtypes")
@Override
public void changed(ObservableValue<? extends Number> o,
Number oldVal, Number newVal) {
// I need to get which f is from the FooList here
// So I can, for example:
f.setBarName(f.getBarName() + newVal);
}
});
FooList.add(f);
}
我收到错误,因为我的f不是最终的。
根据我的理解this question与我建议的方法有关,我得到:
在范围内无法访问Foo类型的封闭实例。
如何在changed()
方法中获取此f实例?
答案 0 :(得分:1)
除非将其定义为final,否则无法从匿名类的changed()
方法中访问变量f。
final Foo f = new Foo();