java使用类之前的准备工作

来源:互联网 发布:实验楼 知乎 编辑:程序博客网 时间:2024/06/07 21:28

package com.test.testtypeinfo;import java.util.*;class Initable {  static final int staticFinal = 47;  static final int staticFinal2 =    ClassInitialization.rand.nextInt(1000);  static {    System.out.println("Initializing Initable");  }}class Initable2 {  static int staticNonFinal = 147;  static {    System.out.println("Initializing Initable2");  }}class Initable3 {  static int staticNonFinal = 74;  static {    System.out.println("Initializing Initable3");  }}public class ClassInitialization {  public static Random rand = new Random(47);  public static void main(String[] args) throws Exception {    Class initable = Initable.class;    System.out.println("After creating Initable ref");    // Does not trigger initialization:    System.out.println(Initable.staticFinal);    System.out.println("-----------------------");    // Does trigger initialization:    System.out.println(Initable.staticFinal2);    System.out.println("-----------------------");    // Does trigger initialization:    System.out.println(Initable2.staticNonFinal);    System.out.println("-----------------------");    Class initable3 = Class.forName("com.test.testtypeinfo.Initable3");    System.out.println("After creating Initable3 ref");    System.out.println(Initable3.staticNonFinal);  }} /* Output:After creating Initable ref47-----------------------Initializing Initable258-----------------------Initializing Initable2147-----------------------Initializing Initable3After creating Initable3 ref74*///:~


原创粉丝点击