一.知识点
- Class cl=对象引用o.getClass();返回引用o运行时真正所指的对象(因为:儿子对象的引用可能会赋给父对象的引用变量中)所属的类O的Class的对象。谈不上对类O做什么操作。
- Class cl=A.class; JVM将使用类A的类装载器,将类A装入内存(前提:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象。
- Class cl=Class.forName("类全名");装载连接初始化类。
- Class cl=ClassLoader.loadClass("类全名");装载类,不连接不初始化。等价于loadClass("类全名", false)。
二.代码
package com.zzy.conf.study;
//一个个运行
public class TestClassLoader {
public static void main(String[] args) throws ClassNotFoundException {
Person p = new Person();
Class personClass1 = p.getClass();
Class personClass2 = Person.class;
Class personClass3 = Class.forName("com.zzy.conf.study.Person");
Class personClass4 = Thread.currentThread().getContextClassLoader().loadClass("com.zzy.conf.study.Person");
}
}
class Person {
private static int age;
private String name;
static {
age = 20;
System.out.println("initialize age");
}
}