Java:为什么匿名内部类可以访问外部类的方法?

亚历克斯女孩

最近,我发现这行得通,尽管我希望它不会:

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”语法?

马可13

自从引入内部类以来,就存在调用此类方法的可能性。Java语言规范的第15.12.4.1节“计算目标参考(如果需要)”中详细描述了解决调用方法实例的机制

您可能指的是您不需要“合格this的事实但这this主要是为了解决内部实例和外部实例具有相同签名的方法时的歧义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么内部类不能访问普通方法和静态方法之间重载的外部类方法?

来自分类Dev

什么叫匿名内部类内部的方法?

来自分类Dev

为什么将其称为“匿名”内部类?

来自分类Dev

在静态内部类内部访问外部类的方法

来自分类Dev

Swift内部类可以访问外部类的self吗?

来自分类Dev

是否可以从内部类实例访问外部类实例?

来自分类Dev

C ++外部类访问内部类的私有-为什么禁止

来自分类Dev

Java外部类对内部类接口常量的访问

来自分类Dev

Java android访问外部类中内部类的成员字段

来自分类Dev

内部类可以访问基类中的私有final方法,但是为什么呢?

来自分类Dev

我可以从外部类的类方法调用内部类吗?

来自分类Dev

Java内部类-访问外部对象的变量

来自分类Dev

内部类访问外部类的嵌套枚举

来自分类Dev

从内部类对象访问外部类函数

来自分类Dev

内部类访问外部类的嵌套枚举

来自分类Dev

从内部类访问外部类的字段

来自分类Dev

从内部类对象访问外部类函数

来自分类Dev

从外部类通过内部类实例访问外部类字段

来自分类Dev

当从匿名内部类或 lambda 访问时,为什么数组的值被视为最终或“有效最终”?

来自分类Dev

为什么嵌套类对象在将外部类实例设置为 null 后仍然可以访问外部类属性?

来自分类Dev

从内部类内部访问的Java局部变量;需要声明为final,为什么它可以在NetBeans中工作?

来自分类Dev

List的Java匿名内部类

来自分类Dev

从内部类调用外部类的同步方法

来自分类Dev

从内部类调用外部类的同步方法

来自分类Dev

内部匿名类的外部类的调用函数(与外部类相同)

来自分类Dev

解释在Java中访问内部类的方法?

来自分类Dev

在匿名内部类中访问变量的一种干净方法是什么?

来自分类Dev

在匿名内部类中访问变量的一种干净方法是什么?

来自分类Dev

如何在Java中访问匿名外部类的“ this”引用

Related 相关文章

  1. 1

    为什么内部类不能访问普通方法和静态方法之间重载的外部类方法?

  2. 2

    什么叫匿名内部类内部的方法?

  3. 3

    为什么将其称为“匿名”内部类?

  4. 4

    在静态内部类内部访问外部类的方法

  5. 5

    Swift内部类可以访问外部类的self吗?

  6. 6

    是否可以从内部类实例访问外部类实例?

  7. 7

    C ++外部类访问内部类的私有-为什么禁止

  8. 8

    Java外部类对内部类接口常量的访问

  9. 9

    Java android访问外部类中内部类的成员字段

  10. 10

    内部类可以访问基类中的私有final方法,但是为什么呢?

  11. 11

    我可以从外部类的类方法调用内部类吗?

  12. 12

    Java内部类-访问外部对象的变量

  13. 13

    内部类访问外部类的嵌套枚举

  14. 14

    从内部类对象访问外部类函数

  15. 15

    内部类访问外部类的嵌套枚举

  16. 16

    从内部类访问外部类的字段

  17. 17

    从内部类对象访问外部类函数

  18. 18

    从外部类通过内部类实例访问外部类字段

  19. 19

    当从匿名内部类或 lambda 访问时,为什么数组的值被视为最终或“有效最终”?

  20. 20

    为什么嵌套类对象在将外部类实例设置为 null 后仍然可以访问外部类属性?

  21. 21

    从内部类内部访问的Java局部变量;需要声明为final,为什么它可以在NetBeans中工作?

  22. 22

    List的Java匿名内部类

  23. 23

    从内部类调用外部类的同步方法

  24. 24

    从内部类调用外部类的同步方法

  25. 25

    内部匿名类的外部类的调用函数(与外部类相同)

  26. 26

    解释在Java中访问内部类的方法?

  27. 27

    在匿名内部类中访问变量的一种干净方法是什么?

  28. 28

    在匿名内部类中访问变量的一种干净方法是什么?

  29. 29

    如何在Java中访问匿名外部类的“ this”引用

热门标签

归档