日期:2014-05-20  浏览次数:20673 次

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


------解决方案--------------------
常规做法确实只能如此了,或者不要限制于局部变量,或者老老实实定义该类(不要匿名)。
------解决方案--------------------
探讨

常规做法确实只能如此了,或者不要限制于局部变量,或者老老实实定义该类(不要匿名)。

------解决方案--------------------
不使用匿名内部类,使用成员内部类就可以很方便的访问需要更改的属性了
------解决方案--------------------
Java code

//如果局部变量不需要传出外部类,只是需要使用它的指,
//那么可以在内部类定一个属性,然后内部类使用该属性就可以了,如
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]);
}