Class对象的生成方式
package classloader;
public class A {
public static void main(String[] args) throws ClassNotFoundException {
// Class b = B.class; // 加载类, 但不执行初始化
// Class b = Class.forName("classloader.B"); // 装入类, 并执行类的静态初始化
B b = new B();
Class _b = b.getClass(); // 对类进行静态初始化、非静态初始化;返回引用运行时真正所指的对象
}
}
class B {
public B() {
System.out.println("B()");
}
// 非静态初始化块B1 先于 构造函数
{
System.out.println("execute block B1");
}
// 静态初始化块
static {
System.out.println("execute static block B");
}
// 非静态初始化块B2 先于 构造函数
{
System.out.println("execute block B2");
}
}