首页 > 编程语言 > 详细

Java 探究内部类的加载顺序

时间:2021-09-12 05:24:23      阅读:31      评论:0      收藏:0      [点我收藏+]

代码展示

public class Test {
    static {
        System.out.println("外部类加载了!");
    }

    public Test(){
        System.out.println("外部类构造方法!");
    }

    /**
     * 静态内部类!
     */
    public static class StaticInnerClass {
        static {
            System.out.println("静态内部类加载了!");
        }

        public StaticInnerClass(){
            System.out.println("静态内部构造方法!");
        }
    }

    /**
     * 非静态内部类中不允许有静态代码块!
     */
    public class InnerClass {
        public InnerClass(){
            System.out.println("内部构造方法!");
        }
    }
}

初始化外部类

public class Test {
    public static void main(String[] args) {
        new Test();
    }
}

结果:
外部类加载了!
外部类构造方法!

总结:
外部类的初始化,并不会加载静态内部类!

初始化内部类

public class Test {
    public static void main(String[] args) {
        new Test(). new InnerClass();
    }
}

结果:
外部类加载了!
外部类构造方法!
内部构造方法!

总结:
内部类的初始化,会加载外部类。

初始化静态内部类

public class Test {
    public static void main(String[] args) {
        new Test.StaticInnerClass();
    }
}

结果:
外部类加载了!
静态内部类加载了!
静态内部构造方法!

总结:
静态内部类初始化,会加载外部类。

Java 探究内部类的加载顺序

原文:https://www.cnblogs.com/feiqiangsheng/p/15251747.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!