您的位置:首页 > 编程语言 > Java开发

匿名内部类使用的外部变量为什么要是final

2017-04-15 20:22 141 查看
首先要了解什么是闭包。

java内部类由于含有对外部类的引用,所以可以正常访问外部变量。

但java对于闭包的处理仅限于普通的内部类,对于匿名内部类则不存在完善的处理方法。

下面是一个java匿名内部类



jvm的处理方法为:



由此可见,匿名内部类只是复制了一份值,而不是传递了引用。这也是为什么编译器要求闭包的处理参数必须是final的原因。

不仅是匿名内部类,在方法中的内部类,在方法块中的内部类,都要求闭包参数为final。

注意:java1.8版本解决了这个问题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 匿名内部类 final