java中匿名内部类可以使用外部类的成员变量吗 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

java中匿名内部类可以使用外部类的成员变量吗

蛮大人123 2016-02-26 18:13:12 3582

java中匿名内部类可以使用外部类的成员变量吗?

Java
分享到
取消 提交回答
全部回答(2)
  • 幺刀
    2019-07-17 18:48:36

    可以的,但是JDK1.8以前内部类要调用外部类的成员变量,需要要声明为final;1.8之后没有此限制

    public class OuterClass {
        int num1 = 1; //成员变量
    
        public void outerMethod() {
            System.out.println("It's Method of OuterClass");
            int num2 = 2; // 方法内局部变量
            class Innerclass {
                public void innerMethod() {
                    // 方法中内部类的方法,可以正常访问外部类的成员变量
                    System.out.println(num1);
                    // JDK1.8以前,方法中内部类的方法,不能直接访问外部类的方法的局部变量,必须声明为final
                    System.out.println(num2);
                }
            }
            new Innerclass().innerMethod();
        }
    
        class Innerclass {
            public void innerMethod() {
                System.out.println("It's Method of innerMethod");
            }
        }
    
    }
    0 0
  • 蛮大人123
    2019-07-17 18:48:36

    可以,即使是private的也可以,测试下其实不费事

    public class Outer{
      private int size;
      public class Inner {
        public void dostuff() {
            size++;
        }
      }
      public void testTheInner() {
        Inner in = new Inner();
        in.dostuff();
      }
    }
    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程