博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
局部内部类对外部属性和变量的访问测试
阅读量:5083 次
发布时间:2019-06-13

本文共 1802 字,大约阅读时间需要 6 分钟。

package test;/** *  * 局部内部类能不能访问外围方法或者属性的值 ? *  * 局部内部类可以访问属性 ,但是不能访问非final的局部变量  * */public class Test1 {    private String attribute ;    public void f(){        final String localAttribute = "" ;        class InnerClass {            public InnerClass(){                System.out.println("attribute " + attribute );                attribute = attribute + "" ;                //Cannot refer to                 //the non-final local variable localAttribute                 //defined in an enclosing scope                System.out.println("localAttribute " + localAttribute );                localAttribute = localAttribute + "" ;            }        }    }}/** * 测试任意代码块中的内部类访问属性和局部变量  */class TestIfLocalClass {    private String attribute ;    public TestIfLocalClass(){        final String localAttribute = "" ;        if(true){            class IfLocalClass {                public IfLocalClass(){                    System.out.println(attribute);                    attribute = attribute + "" ;                    System.out.println(localAttribute);                    localAttribute = localAttribute + "" ;                }            }        }    }}/** * 测试匿名内部类对外围属性和本地变量的访问  */interface TestAnonymousClass{    public void f() ;}class TestAClass{    private String attribute ;    public TestAnonymousClass f(){        final String localAttribute = "" ;        return new TestAnonymousClass(){            @Override            public void f() {                System.out.println(attribute);                attribute = attribute + "" ;                System.out.println(localAttribute);                localAttribute = localAttribute + "" ;            }        } ;    }}

通过上面的测试可得,局部内部类能够访问和修改外部类的属性但是不能访问非final修饰的局部变量,可以访问final修饰的局部变量但是不能修改其值。

转载于:https://www.cnblogs.com/caiyao/p/4693332.html

你可能感兴趣的文章
CI框架整合UEditor编辑器上传功能
查看>>
树的层号表示
查看>>
最大整数
查看>>
[转] 数据模型建设的几点思考与总结
查看>>
[1].Common SSIS Applications
查看>>
stm8s + si4463 寄存器配置
查看>>
Asp.NetCore取配置信息
查看>>
自动变量提示
查看>>
css中盒模型的理解与整理
查看>>
Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别
查看>>
如果你是程序员,这些细节会害死你(3)
查看>>
xmlhttp的OnReadyStateChange事件
查看>>
python连接oracle数据库
查看>>
C++异常处理
查看>>
捕获键盘和鼠标的消息机制
查看>>
Csharp 简单操作Word模板文件
查看>>
laravel 配置设置
查看>>
常用linux命令
查看>>
git 代码更新
查看>>
eclipse转到idea过程中的基本设置...
查看>>