在Java中,如何从匿名类外部访问变量

时间:2013-11-09 06:19:48

标签: java anonymous-inner-class

例如:

for (int i = 0; i < 10; i++){
   SomeClass something = new SomeClass();
   something.setOnClickListener(new OnClickListener() {
      public void onClick(){
         doSomething(i);
      }
   });
}

我不允许使用变量i,Eclipse建议我制作i final,但我不能这样做,因为我需要它才能正确迭代?

2 个答案:

答案 0 :(得分:6)

i复制到循环体中的final变量。

for (int i = 0; i < 10; i++){
   final int j = i;
   SomeClass something = new SomeClass();
   something.setOnClickListener(new OnClickListener() {
      public void onClick(){
         doSomething(j);
      }
   });
}

答案 1 :(得分:1)

你可以做到

loop with i
  final int k = i
  annonymousClass