• 静态内部类的加载方式


    非内部类的静态成员变量会直接加载

    public class OuterClass  
    {  
        static{  
            System.out.println("OuterClass static load.");  
        }  
      
        public OuterClass()  
        {  
            System.out.println("flag");  
        }  
        public OuterClass(String flag)  
        {  
            System.out.println("flag:"+flag);  
        }  
          
        class InnerClass  
        {  
            //private static String te = "";  
            /*static{ 
                System.out.println("InnerClass static load."); 
            }*/   
            private OuterClass out = new OuterClass("inner");  
        }  
        static class InnerStaticClass  
        {  
            private static OuterClass out = new OuterClass("innerStatic");  
            static{  
                System.out.println("InnerStaticClass static load.");  
            }   
            private static void load()  
            {  
                System.out.println("InnerStaticClass func load().");  
            }  
        }  
        public static  OuterClass getInstatnce()  
       {  
          return OuterClass.InnerStaticClass.out;  
       }  
        public static void main(String[] args)  
        {  
    //        OuterClass.InnerStaticClass.load();  
    //        OuterClass out = OuterClass.InnerStaticClass.out;  
    //        OuterClass.InnerClass innerClass = out.new InnerClass() ;  
            //OuterClass.InnerStaticClass.out.  
        }  
          
    } 

    打印结果:OuterClass static load.
    public class OuterClass  
    {  
        static{  
            System.out.println("OuterClass static load.");  
        }  
      
        public OuterClass()  
        {  
            System.out.println("flag");  
        }  
        public OuterClass(String flag)  
        {  
            System.out.println("flag:"+flag);  
        }  
          
        class InnerClass  
        {  
            //private static String te = "";  
            /*static{ 
                System.out.println("InnerClass static load."); 
            }*/   
            private OuterClass out = new OuterClass("inner");  
        }  
        static class InnerStaticClass  
        {  
            private static OuterClass out = new OuterClass("innerStatic");  
            static{  
                System.out.println("InnerStaticClass static load.");  
            }   
            private static void load()  
            {  
                System.out.println("InnerStaticClass func load().");  
            }  
        }  
        public static  OuterClass getInstatnce()  
       {  
          return OuterClass.InnerStaticClass.out;  
       }  
        public static void main(String[] args)  
        {  
            OuterClass.InnerStaticClass.load();  
    //        OuterClass out = OuterClass.InnerStaticClass.out;  
    //        OuterClass.InnerClass innerClass = out.new InnerClass() ;  
            //OuterClass.InnerStaticClass.out.  
        }  
          
    }  

    内部类只会在第一次使用时加载,不使用就不加载。
    打印结果:

    OuterClass static load.
    flag:innerStatic
    InnerStaticClass static load.
    InnerStaticClass func load().

     

    public class OuterClass  
    {  
        static{  
            System.out.println("OuterClass static load.");  
        }  
      
        public OuterClass()  
        {  
            System.out.println("flag");  
        }  
        public OuterClass(String flag)  
        {  
            System.out.println("flag:"+flag);  
        }  
          
        class InnerClass  
        {  
            //private static String te = "";  
            /*static{ 
                System.out.println("InnerClass static load."); 
            }*/   
            private OuterClass out = new OuterClass("inner");  
        }  
        static class InnerStaticClass  
        {  
            private static OuterClass out = new OuterClass("innerStatic");  
            static{  
                System.out.println("InnerStaticClass static load.");  
            }   
            private static void load()  
            {  
                System.out.println("InnerStaticClass func load().");  
            }  
        }  
        public static  OuterClass getInstatnce()  
       {  
          return OuterClass.InnerStaticClass.out;  
       }  
        public static void main(String[] args)  
        {  
            OuterClass.InnerStaticClass.load();  
            OuterClass out = OuterClass.InnerStaticClass.out;  
            OuterClass.InnerClass innerClass = out.new InnerClass() ;  
        }  
          
    }  
    打印结果:

    OuterClass static load.
    flag:innerStatic
    InnerStaticClass static load.
    InnerStaticClass func load().
    flag:inner

     

  • 相关阅读:
    Python下划线简介
    OneHot编码
    搜狗新闻原始数据处理
    2. mirth connect探索------------ cs模式客户端登录
    System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
    python学习历程-安装篇(一)
    Python学习笔记(一)
    使用dva 搭建ant design mobile项目
    [error] OpenEvent("Global gx_stop_25184") failed (2: The system cannot find the file specified)
    nginx 上部署 react 项目
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/6812385.html
Copyright © 2020-2023  润新知