jvm-010(张龙老师jvm教程) 接口的初始化

    技术2023-05-15  99

    jvm-010 接口的初始化

    1、调用接口的常量:编译器即可确定的常量,不会引发接口的初始化。

    public class TestCode05 { public static void main(String[] args) { System.out.println(ParentInterface.a); } } interface ParentInterface { int a = 10; Thread thread = new Thread(){ { System.out.println(" ParentInterface init "); } }; }

          输出结果:

    10

    2、调用接口的常量:运行期才确定值的常量,会引发接口的初始化。

    public class TestCode05 { public static void main(String[] args) { System.out.println(ParentInterface.a); } } interface ParentInterface { int a = new Random().nextInt(10); Thread thread = new Thread(){ { System.out.println("ParentInterface init "); } }; }

          输出结果:

    ParentInterface init 4

    3、初始化一个接口的实现类,不会引发接口的初始化。

    public class TestCode05 { public static void main(String[] args) { System.out.println(ChildClass.str); } } interface ParentInterface { Thread thread = new Thread(){ { System.out.println("ParentInterface init"); } }; } class ChildClass implements ParentInterface { public static String str = "hello"; static { System.out.println("ChildClass init"); } }

          输出结果:

    ChildClass init hello

    4、初始化一个接口的子接口,不会引发父接口的初始化。

    public class TestCode05 { public static void main(String[] args) { System.out.println(ChildInterface.num); } } interface ParentInterface { Thread thread = new Thread(){ { System.out.println("ParentInterface init"); } }; } interface ChildInterface extends ParentInterface { public static int num = new Random().nextInt(5); Thread thread0 = new Thread(){ { System.out.println("ChildInterface init"); } }; }

          输出结果:

    ChildInterface init 4

     

     

     

    Processed: 0.013, SQL: 9