如何在内部匿名类用一个外部int变量,而且还能在内部类里改变这个int值。

解决方案 »

  1.   

    答:直接访问并修改啊。比如代码:public class Outer { private int x=10;//外部类的int变量
    Runnable r=new Runnable()
    { public void run() {
    // TODO Auto-generated method stub
    x=12;//匿名内部类直接访问并修改外部类的x的值啊。
    }

    };

    }
      

  2.   

    加了final 就不能在内部类里改变了
      

  3.   

    我的代码是public static void main(String[] arggg)
    {
    .......int i = 0;JButton b = new JButton("");
    b.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    .......i ++;}
    });
      

  4.   

    答:原来是这样。由于局部变量i,你不能加上final,那么只好:
    方法之一:若要简单,请楼主将int i=0;换一个位置,定义为:类中的一个static int i=0;就行了。
    若不能这样修改,则:
    方法之二:将int i=0;定义为对象的数据成员,并将匿名类等这些代码放到类的构造器或对象方法之中。
    以上仅供你参考
      

  5.   

    谢谢你
    我也觉得方法二能解决。
    但我只是刚开始学java,对大局把握不好
    只会把所有东西全装到main()里边。
    只能再加强学习了。
      

  6.   

    1 类一级的变量是可以访问的,比如class MyTest {  int myNumber; // 这个可以2 方法里面的final 变量,比如  void test(){
        final int aNumber; // 这个也可以,不过innerClass 必须在这个方法里面
    }