原文:局部内部类访问它所在方法的局部变量时,要求该局部变量必须声明为final的原因

这是java的一条规则。那么为什么会有这条规则呢 要想弄懂这个问题,就需要弄懂局部内部类对象和局部变量的生命周期谁更长的问题。 首先,看一段代码,以没有将变量声明为final的代码作为例子,代码如下: 如上面的第 行代码所示,变量x没有被声明为final,如果是这样的话,当执行完第 行的outMethod 方法后,outMethod 方法将出栈,出栈后outMethod 方法里面定义的所有变量 ...

2018-05-11 22:12 1 2522 推荐指数:

查看详情

为什么java内部类访问局部变量必须声明为final

https://blog.csdn.net/z55887/article/details/49229491 先抛出让我疑惑了很久的一个问题 编程,在线程中使用局部变量时候经常编译器会提示:局部变量必须声明为final package test; public class ...

Thu Jul 04 06:14:00 CST 2019 0 783
为什么匿名内部类只能访问所在方法中的final类型的局部变量

  大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类,包含内部类的类也被称为外部类。   对于上面的成员内部类,一般做法是在Outer中写一个返回Inner类对象的方法 ...

Fri Mar 04 05:12:00 CST 2016 3 10034
内部类访问局部变量的时候,为什么变量必须加上final修饰

这里的局部变量就是在类方法中的变量,能访问方法变量的类当然也是局部内部类了。我们都知道,局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的。例如下面的代码: class Outer{ public static void main(String[] args ...

Tue Aug 02 23:12:00 CST 2016 0 8054
内部类访问局部变量必须加final

(1)内部类是外部类的一个成员,就像外部类的成员方法一样,所以内部类有权限访问部类的所有成员,包括private的。 (2)内部类不能访问部类方法中的局部变量,除非变量final的(一般发生在方法中定义的内部类)。这是因为局部变量的生命周期原因 ...

Wed Sep 09 17:36:00 CST 2015 0 2040
内部类访问局部变量,为什么需要加final关键字

变量的作用域的问题,因为匿名内部类是出现在一个方法内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类方法内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类 ...

Tue Oct 29 22:16:00 CST 2019 0 440
局部内部类访问局部变量

局部内部类是指位于方法内的类,局部内部类若要访问所在方法内的变量,则该变量必须是final修饰的。 Inner是位于方法main()内的局部内部类,若要访问方法内的局部变量a,则a应当使用final修饰。 被内部类访问局部变量会被拷贝一份到内部类中,即Inner中 ...

Tue Aug 06 23:43:00 CST 2019 1 984
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM