Java:为什么匿名内部类可以访问外部类的方法?
最近我发现这是可行的,尽管我认为它不会:Java:为什么匿名内部类可以访问外部类的方法?,java,anonymous-class,Java,Anonymous Class,最近我发现这是可行的,尽管我认为它不会: class Outer { Button b; void foo() {} void bar() { b = new Button(); b.setOnClickListener(new OnClickListener(){ @Override public void OnClick() {
class Outer
{
Button b;
void foo() {}
void bar()
{
b = new Button();
b.setOnClickListener(new OnClickListener(){
@Override
public void OnClick()
{
foo();
}
});
}
}
我希望Outer.this.foo()是必需的,但似乎foo()也可以。
有人能告诉我这是什么时候添加到语言中的吗?
请帮助我理解这里的确切名称解析规则。谢谢
问题是:
1) 为什么会这样
2) 如果这是可行的,为什么我们需要“Outer.this”语法?自从引入内部类以来,就有可能调用这样的方法。中详细描述了解析调用方法的实例的机制
你可能指的是你不需要的事实。但是,当内部实例和外部实例有一个具有相同签名的方法时,此
主要用于解决歧义 这是对语言设计的投诉吗?不,我只是想了解这里的确切名称解析规则。我觉得你的问题没有多大用处。如果你的评论是你的实际问题,那会有很大的变化。我相信Java 1.1中添加了内部类,大约是在1997年……非常感谢,这正是我需要知道的。