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

ihrthk
博客专家认证
2011-10-14 12:30:52
如题。
...全文
311 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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]

62,635

社区成员

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

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