initialize Class-static 以及final对class初始化的影响

来源:互联网 发布:qq飞车卡车软件 编辑:程序博客网 时间:2024/05/31 15:18
package com.eric.reflect;import java.util.Random;/** * static&&constant not trigger initialization * Class literals not trigger initialization * */public class Initialize {    public static final String PCE_VERSION_CONTROL = "@(#) $RCSfile: $, $Revision: $, $Date: {1}quot;;    public static void main(String[] args) throws ClassNotFoundException, InstantiationException,            IllegalAccessException {        simpleInit();        simpleInit2();    }    private static void simpleInit2() {        System.out.println(Initable.staticFinal);// does not trigger initialization        System.out.println(Initable.staticFinal2);// will trigger initialization        System.out.println(Initable2.staticNonFinal);// will trigger initialization        System.out.println(Initable3.staticNonFinal);// will trigger initialization    }    private static void simpleInit() throws ClassNotFoundException, InstantiationException, IllegalAccessException {        System.out.println("before create Candy");        Class.forName("com.eric.reflect.Candy");// will trigger initialization        System.out.println("after create Candy");        System.out.println("before create Gum");        Class<?> class2 = Gum.class;// does not trigger initialization        System.out.println("after create Gum");        class2.newInstance();// will trigger initialization        System.out.println("before create Cookie");        new Cookie();// will trigger initialization        System.out.println("after create Cookie"+"\n");    }}class Initable {    static final int staticFinal = 47;    static final int staticFinal2 = new Random().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");    }}class Candy {    static {        System.out.println("Loading Candy");    }}class Gum {    static {        System.out.println("Loading Gum");    }}class Cookie {    static {        System.out.println("Loading Cookie");    }}/* *  * History: *  *  *  * $Log: $ */


原创粉丝点击