开发者社区> 问答> 正文

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

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

展开
收起
蛮大人123 2016-02-26 18:13:12 5269 0
2 条回答
写回答
取消 提交回答
  • 可以的,但是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");
            }
        }
    
    }
    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();
      }
    }
    2019-07-17 18:48:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载