Java中的匿名内部类怎么与外部类交互
Java中的匿名内部类如何与外部类交互?
现在有一个匿名的内部类要利用外部类中的局部变量(内部类也在此函数中定义),读取局部变量并要重新赋值局部变量,但是貌似内部类只能利用外部类中的final变量,但是final变量又不能多次赋值。。。。
啊,好烦好烦。。。
求方法。。。
------解决方案--------------------
常规做法确实只能如此了,或者不要限制于局部变量,或者老老实实定义该类(不要匿名)。
------解决方案--------------------
------解决方案--------------------
不使用匿名内部类,使用成员内部类就可以很方便的访问需要更改的属性了
------解决方案--------------------
现在有一个匿名的内部类要利用外部类中的局部变量(内部类也在此函数中定义),读取局部变量并要重新赋值局部变量,但是貌似内部类只能利用外部类中的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]); }