方法中的内部类能不能访问方法中的局部变量,为什么?

原创 2011年01月12日 20:39:00

个人总结:

      一个类中的内部类,其实这个内部类相对这个类就和以他方法和属性一样的。只是内部类的生命周期和这个类的属性生命周期是不同的。
 在内存中,类的属性会被分配到栈中的。当调用结束的时候就会退栈,也就是说在内存中这个属性就消失了。内部类也是类,只用在内存
 中对他的引用消失了才会死亡的内部类,这个时候内部类调用类中已经结束调用的属性是不可能的。也就是说局部类的生命周期超过了类的
 局部变量。解决的办法就是在局部变量前加上final,这样类中属性就会被分配在堆内存中,生命周期是和工程的生命周期一样了,其内部类
 就可以调用了。

       

关于局部内部类访问所在方法的参数或局部变量为什么必须是final的

内部类的种类一共分为四种,我看其他几种内部类的时候思路都是很清晰的,然后我就碰到了这一条:“方法中的内部类可以访问外部类成员。对于方法的参数和局部变量,必须有final修饰才可以访问”。于是我就有点疑...
  • hushengqiang
  • hushengqiang
  • 2016年03月08日 13:48
  • 1637

深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量

开篇 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成员 中, 通过使用javap工具反编译内部类的字节码, 我们知道了为什么内部类中可以访问外部类的成员, 其实是编译器在编译内...
  • brave2211
  • brave2211
  • 2014年02月28日 00:11
  • 16911

“局部内部类只能访问被final修饰的局部变量”的解释

1)所谓“局部内部类”就是在对象的方法成员内部定义的类。而方法中的类,访问同一个方法中的局部变量,是天经地义的。那么为什么要加上一个final呢? 2)原因是:编译程序实现上的困难,难在何处:内部类...
  • songliying001
  • songliying001
  • 2014年07月28日 23:36
  • 624

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

先抛出让我疑惑了很久的一个问题 编程时,在线程中使用局部变量时候经常编译器会提示:局部变量必须声明为final package test; public class ThreadTest { ...
  • z55887
  • z55887
  • 2015年10月18日 19:35
  • 2512

方法中的内部类能不能访问方法中的局部变量?

内部类的生命周期和方法中的局部变量是不一样的,内部类是也是一个类,是存储在堆中,也只有当对该类的引用消失时,内部类才会消亡。而方法的局部变量是存储在堆栈中的,当调用结束时就会退栈,即在内存中这个属性就...
  • anlidengshiwei
  • anlidengshiwei
  • 2015年01月01日 18:47
  • 352

方法中的内部类能不能访问方法中的局部变量

public class LocalInnerClassTest{ public static void main(String[] args){ Outer obj...
  • anskya520
  • anskya520
  • 2011年03月04日 17:39
  • 2212

方法里的局部内部类不能访问一般的方法里的局部变量

从内存中看,当方法里的局部变量所在方法结束时,该变量即在栈内存中消失;而内部类其实是一个类,只有内存中对它的所有引用都消失后,该内部类才"死亡",即内部类的生命周期可能比局部变量长。如果局部内部类能访...
  • edgar52
  • edgar52
  • 2016年05月07日 14:02
  • 721

局部内部类引用外部类中的局部变量必须是final属性的!

如例中所示,声明了一个局部内部类TimerPrint,这个类中的方法引用了一个局部变量testTxt,必须声明为final!!why? 逻辑上:因为该内部类出现在一个方法的内部,但实际编译时,内...
  • molu_chase
  • molu_chase
  • 2016年08月22日 02:15
  • 1081

【面试对宝典40题的解释】匿名内部类访问外部类中的局部变量必须是final属性

http://ldzyz007.iteye.com/blog/844380 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final的。 1.匿名内部类...
  • Angiexia
  • Angiexia
  • 2014年03月14日 17:59
  • 1425

内部类访问局部变量时,为什么需要加final关键字

是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,...
  • asdf717
  • asdf717
  • 2015年08月03日 15:30
  • 1558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:方法中的内部类能不能访问方法中的局部变量,为什么?
举报原因:
原因补充:

(最多只允许输入30个字)