关于java方法中的局部匿名内部类调用局部变量的问题

大家都知道,java的规范中是不允许局部匿名内部类来调用非final的类型局部变量的,这点并没什么好说的毕竟是规范嘛。我们要无条件的遵守。

问题是官方的文档中还有一个词与之先关,“与final”相同效果的变量。之前很纳闷,它要表达什么意思呢。

直到一次写代码的经历,本来局部匿名类中的方法调用一个局部变量没有问题,但当我的局部变量由于在获取值时要抛异常,所以就try了一下,导致声明与赋值由两个语句完成。突然我的内部类的方法报错了,告诉我无法访问非final类型的变量。我知道jdk6-7是编译不过,但我的是jdk8啊,应该没问题。可为什么会出现这个问题呢?在一路回撤操作中,突然发现是由于局部变量的赋值方式。比如 Object obj = null;obj=new Person();和Object obj = new Person();的区别。现在我明白什么叫与final相同效果了。不知道理解对对不对,应该指的就是初始化方式吧。要与final类型相同。

    原文作者:ch2jc
    原文地址: https://blog.csdn.net/CH2JC/article/details/86501006
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞