内部内
外部类名.内部类名 对象名= 外部类对象.内部类对象
静态内部内:
外部类名.内部类名 对象名= 外部内名.内部内对象
局部内部内,变量要加final,它会随着.class类的加载进常量池,而内部方法弹栈,变量不会马上消失,后面还可以引用从常量池。不然的话内部方法弹栈,不加final局部变量也会弹栈,而内部方法的类的引用虽然弹栈了,但是不会被马上回收,可能会用到变量,java考虑到安全问题,制定这一规则,而JDK1.8取消这一规则,所以我认为是一Bug
匿名内部内相当于接口的子对象,整个是一个子类的对象。本质就是,一个继承了该类,或者实现了该接口的子类,的匿名对象。
|
|