关于Class对象的作用与产生
?
Class对象是用来创建类的常规对象的,当我们编译一个Java类就会同时产生一个与该类相对应的Class对象(保存在.class文件中)。
????? import java.util.*;class Initable{
static final int staticFinal = 47;
static final int staticFinal2 = ClassInitialization.rand.nextInt(100);
static{
System.out.println("Initialization Initable");
}
}
class Initable2{
static int staticNoFinal = 147;
static{
System.out.println("Initialization Initable2");
}
}
class Initable3{
static int staticNoFinal = 74;
static{
System.out.println("Initialization Initable3");
}
}
public class ClassInitialization
{
public static Random rand = new Randdom(47);
public static void main(String[] args){
Class initable = Initable.class; //不会引起初始化
System.out.println("after creating Initable reference");
System.out.println(Initable.staticFinal); //引用编译器常量不会引起初始化
System.out.println(Initable.staticFinal2); //引起初始化
System.out.println(Initable2.staticNoFinal); //引用非编译期常量会引起初始化
Class initable3 = Class.forName("Initable3"); //默认会引起初始化
System.out.println("after creating Initable3 reference");
System.out.println(Initable3.staticNoFinal);//前面已经初始化此处不用再初始化
}
}