本帖最后由 jacktree365 于 2011-07-23 14:24:39 编辑

解决方案 »

  1.   


    class Test
    {
        class Inner
        {
            Test inner;
            Inner()
            {
            }
            public Inner(Test inner)
            {
                this.inner=inner;
            }
            void dispaly()
            {
                System.out.println("in等于"+inner.in);
                System.out.println("in等于"+Test.this.in);
                System.out.println("in"+in);
                System.out.println(i);        }
        }
        int in=5;
        void test()
        {
            int i=5;
            Inner inner=new Inner(this);
            inner.dispaly();    }    public static void main(String []args)
        {
            Test id=new Test();
            id.test();
        }
    }
    你访问了方法内的局部变量,是访问不到的。因为内部内和方法是平级的。
    就类型于在页面上弹出一个pop,接着又弹出pop,两个弹出的pop不是父子关系,是兄弟关系。
      

  2.   

    这个貌似是存活周期长短的原因,局部变量随着语句块的结束之后的一段时间会消失,因此访问是很有可能变量已经不存在了,而声明为final时生存周期变一直存在
      

  3.   

    这是java规定的,局部内部类可以访问外部类的局部变量或方法参数变量,但变量必须声明为final。