有没有办法克服匿名内部类中访问变量必须是final的缺点?
例如,我有一个按钮,应该随时报告列表的大小。在稍后的while循环中,列表应该被修改,并且每个周期列表都将被新实例化,如果列表是final,则不可能完成这一点。
一种方法是将
例如,我有一个按钮,应该随时报告列表的大小。在稍后的while循环中,列表应该被修改,并且每个周期列表都将被新实例化,如果列表是final,则不可能完成这一点。
// has to be final
final ArrayList<String> list = new ArrayList<String>();
MyButton button = new MyButton() {
@Override
public int getValue() {
return list.size();
}
};
while (true) {
// modify/re-assign list
}
一种方法是将
list
变成静态变量,但这并不是最优的解决方案。是否有其他方法来解决这个问题?