原文:内部类访问局部变量的时候,为什么变量必须加上final修饰

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

2016-08-02 15:12 0 8054 推荐指数:

查看详情

匿名内部类可以访问变量---静态成员变量final修饰局部变量

  在学习多线程的时候用到了匿名内部类,匿名内部类可以访问static静态成员变量或者final修饰局部变量。   匿名内部类在编译之后会生成class文件,比如Test内的第一个匿名内部类编译之后就是Test$1.class;   匿名内部类访问final修饰局部变量在生成Test ...

Tue Dec 11 06:53:00 CST 2018 0 816
JAVA中内部类(匿名内部类)访问局部变量为什么要用final修饰

本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量。 因此,内部类能够访问局部变量,说明这个内部类不是在类中定义的内部类,而是在方法中定义的内部类,称之为:局部内部类 ...

Sun Aug 07 01:21:00 CST 2016 5 11312
内部类访问局部变量必须加final

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

Wed Sep 09 17:36:00 CST 2015 0 2040
为什么Java匿名内部类访问的方法参数或方法局部变量需要被final修饰

分析 1、内部类(不论是否是匿名内部类)可访问部类变量(包括外部类的类变量、实例变量、外部类方法的局部变量等)、方法:可修改变量值、调用方法等。内部类定义时的位置有两种: 在外部类的方法内:此时该内部类只能是匿名内部类(语法上不支持在方法内定义非匿名类)。此时内部类访问上述所有变量 ...

Wed Jun 21 19:57:00 CST 2017 0 3698
匿名内部类为什么访问部类局部变量必须是final的?

1. 内部类里面使用外部类局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。说白了,内部类会自动 ...

Fri Aug 05 08:03:00 CST 2016 1 13823
内部类访问局部变量时,为什么需要加final关键字

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

Tue Oct 29 22:16:00 CST 2019 0 440
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM