首页文章正文

匿名内部类访问成员变量,从内部类中访问本地变量

由于匿名内部类只能用在方法内部 2023-08-17 19:46 639 墨鱼
由于匿名内部类只能用在方法内部

匿名内部类访问成员变量,从内部类中访问本地变量

匿名内部类访问成员变量,从内部类中访问本地变量

内部类数量众多且复杂。在相互访问的情况下,无论是内部类还是外部类,静态(类、方法、成员变量)和非静态(类、方法、成员变量)之间的访问也很复杂。 还有各种麻烦的编译问题。使用匿名内部类会通过外部变量和内部变量打印出相同的内容,说明这两个变量的变量引用指向的内存区域是相同的(这里可以参考原型模式浅克隆)。 指向同一个对象,尽管

(-__-)b 匿名内部类如何访问外部类的成员变量?匿名内部类编译后会生成一个class文件。例如,Test中的第一个匿名内部类编译后将是Test$1.class;在生成Test$1.class之前,匿名内部类中访问的最终修改的局部变量将是Test$1.class

ˇ﹏ˇ 看下面的文件就会清楚,上面的这个$0就是调用匿名内部类的对象,所以这里修改匿名内部类中变量的值可以直接影响到原对象的成员变量。 /DecompiledbyJadv1.5.8g.Cop1。这里所说的"匿名内部类"主要是指在成员方法中定义并与外部类同时实例化的类。如果在成员方法中访问局部变量,局部变量必须通过final修饰。 理性编程

学习多线程时,会使用匿名内部类。匿名内部类可以访问静态静态成员变量或最终修改的局部变量。 匿名内部类在编译后会生成一个class文件。例如,在第一本《ThinkinJava》一书中的Test中,只是指出来自外部闭包环境的匿名内部类的自由变量必须是final的。 但事实上,其他

如果定义为final,java就会将此变量复制为成员变量,并构建到内部类中。这样,由于final修饰的值无法改变,所以该变量指向的内存区域也不会改变。 注意,如果使用JDK1.8,方法1中的内部类的方法是在匿名内部类中读取并修改外部局部变量。在匿名内部类中,可以访问外部变量,但不能修改外部变量,因为匿名内部类访问外部变量,相当于用final关键字修改外部变量。 2.局部变异

后台-插件-广告管理-内容页尾部广告(手机)

标签: 从内部类中访问本地变量

发表评论

评论列表

黑豹加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号