@Override public void onClick(View v) { // TODO Auto-generated method stub //这里内部类访问for语句的变量出现错误,定义final也会错误,因为i++; // mtv.append(num_btn[ClaaaName.t].getText());
} }); }
在中间声明一个final,每次在匿名类调用之前,先更新中间的这个final变量public class A { public void foo(){ for(int i=0;i<3;i++){ final int ii = i; // 放中间,每次给final赋值就可以了 Thread t = new Thread(new Runnable() {
可以通过类名来访问了ClassName.t
private static int t;
for(int t=0;t<num_btn.length;t++){
num_btn[t].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//这里内部类访问for语句的变量出现错误,定义final也会错误,因为i++;
// mtv.append(num_btn[ClaaaName.t].getText());
}
});
}
public void foo(){
for(int i=0;i<3;i++){
final int ii = i; // 放中间,每次给final赋值就可以了
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.printf("%s's i=%d%n", Thread.currentThread().getName(),
ii);
}
});
t.start();
}
}
public static void main(String[] args) {
new A().foo();
}
}