内部匿名类调用外部类方法,不写this?

ihrthk Boss直聘 Android开发工程师  2011-10-14 12:30:52
如题。
...全文
185 点赞 收藏 9
写回复
9 条回复
luyun2011 2011年10月15日
不写,this代表的是当前类,
写上则成了调用本身的类和方法
回复 点赞
ihrthk 2011年10月15日
[Quote=引用 1 楼 ioe_gaoyong 的回复:]
内部匿名类自动获得外部类的成员变量和方法的调用权限,调用外部方法 应该不写this
[/Quote]
既然有“调用权限”,调用外部成员变量时,外部成员变量为什么要声明为final?
回复 点赞
ihrthk 2011年10月14日
[Quote=引用 1 楼 ioe_gaoyong 的回复:]

内部匿名类自动获得外部类的成员变量和方法的调用权限,调用外部方法 应该不写this
[/Quote]
写this,错。。。
this是内部类对象,还是外部类对象?
回复 点赞
风尘中国 2011年10月14日
内部匿名类自动获得外部类的成员变量和方法的调用权限,调用外部方法 应该不写this
回复 点赞
agui54762 2011年10月14日
2楼,3楼说得对。
回复 点赞
sunyiz 2011年10月14日
[Quote=引用 1 楼 ioe_gaoyong 的回复:]

内部匿名类自动获得外部类的成员变量和方法的调用权限,调用外部方法 应该不写this
[/Quote]

如果匿名内部类有和外部类同名的方法,想调用外部类的方法怎么办?
其实可以这样写,最好也建议这样写:

import javax.swing.JButton;

public class A {

public void setText(String a) {

}

public void m1() {
new JButton(){
@Override
public void setText(String text) {
A.this.setText(text); //调用 A 类的 setText
super.setText(text); //调用 JButton 类的 setText
}
};
}

}
回复 点赞
TKD03072010 2011年10月14日
内部类本身就有隐含指外部类的this,可以直接调用
回复 点赞
孟祥月 2011年10月14日
楼主写个代码测试一下
不写
回复 点赞
风尘中国 2011年10月14日
内部类写this,代表的就是内部类对象的当前实例,所以会错

[Quote=引用 2 楼 ihrthk 的回复:]

引用 1 楼 ioe_gaoyong 的回复:

内部匿名类自动获得外部类的成员变量和方法的调用权限,调用外部方法 应该不写this

写this,错。。。
this是内部类对象,还是外部类对象?
[/Quote]
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告