Java中匿名内部类 只能访问外部类变量

Java中匿名内部类 只能访问外部类变量,有需要的朋友可以参考下。


今天看到Java语法书内部类中的 匿名内部类和局部内部类 只能访问外部类的Final变量,不知道为什么这样设计,很是不解,不过后来想想发现好像只能这样.

首先明确一点的是:匿名内部类和局部内部类只能访问外部类的Final变量.

为什么会这样呢?既然是内部类了就想当然的 让他们能访问全部的外部类变量,但是后来一想确实有问题.

首先假如调用了外部类的一个方法f(),他内部有一个内部类class a和局部变量i,假如a中调用了变量i,当f结束的时候,i就跟着结束生命周期,a没有结束,那么就会出现a中访问一个不存在的内存地址,这样会导致严重错误.

为什么final变量可以呢,如果变量i定义为一个final类型,class a中用的就是变量的一份copy,和变量i是同样的值,当f()结束的时候,变量i跟着结束,但是a中的copy没有结束,而且和变量i保持同样的值.

本博客所有文章如无特别注明均为原创。作者:封笔尘缘复制或转载请以超链接形式注明转自 封笔尘缘
原文地址《Java中匿名内部类 只能访问外部类变量
分享到:更多

相关推荐

网友评论(0)