黑马程序员技术交流社区

标题: 方法中定义的内部类的访问权限 [打印本页]

作者: 暴风    时间: 2014-9-27 22:26
标题: 方法中定义的内部类的访问权限
本帖最后由 暴风 于 2014-9-27 22:35 编辑

在方法中定义的内部类为什么只能访问方法中的final类型的局部变量?为什么不能访问方法中的局部变量?class InOut{
    String str=new String ("Between");
    public void amethod(final int iArgs){
        int it315=10;
        class Bicycle{
             public void sayHello(){
                   System.out.println(str);
                   System.out.println(iArgs);
                   System.out.println(it315);/*此处编译出错:InOut.java:13: local variable it315 is accessed from within                                                  inner class; needs to be declared final*/

             }
        }
    }
}


作者: 依然超级赛亚人    时间: 2014-9-27 22:45
方法在调用完毕之后就从栈中消失了,而它内部的变量如果没有用final修饰的话也会随着方法一起消失。而内部类不会马上消失,它由垃圾处理器不定时的处理掉,或者内存不够用了就将其回收。所以,也就是说它比非final修饰的变量消失的晚,所以它在回去访问这个变量的话就已经找不到那个变量了。而用final修饰以后就不会出现这个问题了。
作者: 暴风    时间: 2014-9-28 21:31
依然超级赛亚人 发表于 2014-9-27 22:45
方法在调用完毕之后就从栈中消失了,而它内部的变量如果没有用final修饰的话也会随着方法一起消失。而内部 ...

了解了!多谢前辈!
作者: 天弓    时间: 2014-9-28 21:43
恩 ,写的很好
作者: tiangong    时间: 2014-9-28 21:44
写的很好啊,呵呵
作者: 354620815    时间: 2014-9-28 21:45
{:3_47:}{:3_47:}




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