黑马程序员技术交流社区
标题:
内部类在局部方法中的使用
[打印本页]
作者:
DD_vincent
时间:
2015-8-5 20:13
标题:
内部类在局部方法中的使用
最近刚学到内部类,老毕在视频里提到,内部类如果定义在局部(外部类的方法中),这个内部类仍然可以访问外部类的成员,但是如果要访问这个内部类所在的局部中的成员,那么这个成员必须用final修饰。但是我自己写的代码中,这个内部类也可以访问没有加final修饰的成员,有没有人来解答一下为什么?
class out{
int x = 1;
void method(int a){
int y =2;
class inner{
void function(){
System.out.print(a);
}
}
new inner().function();
}
}
class InnerClassDemo{
public static void main(String[] args){
new out().method(4);
}
}
复制代码
作者:
DD_vincent
时间:
2015-8-11 20:02
好像没人回答,我自己来答好了。
JAVA 8定义了一个功能,称之为“effectively final”,他的作用是对于被匿名内部类访问的局部变量,可以不用final来修饰。但必须按照有final修饰的方式来使用。也就是其值不能再被更改。如果仅仅是读取值或者输出,即使不用final也不会报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2