Java中的匿名内部类如何与外部类交互?

liuwons 2012-05-18 10:55:40
现在有一个匿名的内部类要利用外部类中的局部变量(内部类也在此函数中定义),读取局部变量并要重新赋值局部变量,但是貌似内部类只能利用外部类中的final变量,但是final变量又不能多次赋值。。。。
啊,好烦好烦。。。
求方法。。。
...全文
769 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-05-19
  • 打赏
  • 举报
回复
“现在有一个匿名的内部类”

这是内部类,但不是匿名的。。。
liuwons 2012-05-19
  • 打赏
  • 举报
回复
嗯,终于解决了,谢谢各位了!
MiceRice 2012-05-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
就是实现一个接口的内部类。。。
[/Quote]

如果能定义内部类,而不是一定要匿名类的话,传递参数的方法就多了,你可以直接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();
}
liuwons 2012-05-19
  • 打赏
  • 举报
回复
就是实现一个接口的内部类。。。
qybao 2012-05-18
  • 打赏
  • 举报
回复

//如果局部变量不需要传出外部类,只是需要使用它的指,
//那么可以在内部类定一个属性,然后内部类使用该属性就可以了,如
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]);
}
槑喆喆 2012-05-18
  • 打赏
  • 举报
回复
不使用匿名内部类,使用成员内部类就可以很方便的访问需要更改的属性了
hellogava 2012-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

常规做法确实只能如此了,或者不要限制于局部变量,或者老老实实定义该类(不要匿名)。
[/Quote]
把变量放到方法外吧
MiceRice 2012-05-18
  • 打赏
  • 举报
回复
常规做法确实只能如此了,或者不要限制于局部变量,或者老老实实定义该类(不要匿名)。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧