黑马程序员技术交流社区

标题: 内部类在局部方法中的使用 [打印本页]

作者: DD_vincent    时间: 2015-8-5 20:13
标题: 内部类在局部方法中的使用
最近刚学到内部类,老毕在视频里提到,内部类如果定义在局部(外部类的方法中),这个内部类仍然可以访问外部类的成员,但是如果要访问这个内部类所在的局部中的成员,那么这个成员必须用final修饰。但是我自己写的代码中,这个内部类也可以访问没有加final修饰的成员,有没有人来解答一下为什么?

  1. class out{
  2.         int x = 1;
  3.         void method(int a){
  4.                 int y =2;
  5.                 class inner{
  6.                         void function(){
  7.                                 System.out.print(a);
  8.                         }
  9.                 }
  10.                 new inner().function();
  11.         }       
  12. }

  13. class InnerClassDemo{
  14.         public static void main(String[] args){
  15.                 new out().method(4);
  16.         }
  17. }
复制代码

作者: DD_vincent    时间: 2015-8-11 20:02
好像没人回答,我自己来答好了。
JAVA 8定义了一个功能,称之为“effectively final”,他的作用是对于被匿名内部类访问的局部变量,可以不用final来修饰。但必须按照有final修饰的方式来使用。也就是其值不能再被更改。如果仅仅是读取值或者输出,即使不用final也不会报错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2