现在有一个匿名的内部类要利用外部类中的局部变量(内部类也在此函数中定义),读取局部变量并要重新赋值局部变量,但是貌似内部类只能利用外部类中的final变量,但是final变量又不能多次赋值。
    啊,好烦好烦
    求方法

解决方案 »

  1.   


    //如果局部变量不需要传出外部类,只是需要使用它的指,
    //那么可以在内部类定一个属性,然后内部类使用该属性就可以了,如
    void test() {
        final String name = "test";
        class inner {
            String innername;
            {innername=name;} //定一个属性
            public void innertest() {
                 System.out.println(innername); //内部类的方法使用属性
            }
        };    inner i = new inner();
        inner.innertest();
    }//如果需要内部类修改局部变量,并且能传到外部类,那么
    //因为final只是不能改变它的指向,但是可以改变它的属性,所以你可以用数组来代替,比如
    void test() {
        final String[] name = {"test"};
        class inner {
            public void innertest() {
                name[0] = "innertest";
            }
        };    inner i = new inner();
        i.innertest();
        System.out.println(name[0]);
    }
      

  2.   


    如果能定义内部类,而不是一定要匿名类的话,传递参数的方法就多了,你可以直接setXXOO();甚至可以用构造函数:void test() {
        String name = "test";
        class inner {
            String innername;
            public inner (String name) {
                 this.innername = name;
            }
            public void innertest() {
                 System.out.println(innername); //内部类的方法使用属性
            }
        };    inner i = new inner(name);
        inner.innertest();
    }