我有这个代码:
List r = new ArrayList<>();
for(int i = 0; i < 10; i++) {
r.add(new Runnable() {
@Override
public void run() {
System.out.println(i);
}
});
}
它显然没有编译,因为我需要是最终用于匿名类.但是我不能把它做成最终的,因为它不是.你会怎么做?一个解决方案是复制它,但我认为可能会有一个更好的方法:
List r = new ArrayList<>();
for(int i = 0; i < 10; i++) {
final int i_final = i;
r.add(new Runnable() {
@Override
public void run() {
System.out.println(i_final);
}
});
}
编辑只是为了说清楚,我在这里为了这个例子使用了一个Runnable,问题是真正的匿名类,这可能是其他的.