实验代码
public class TestReflection {
public static void main(String[] args){
String className = "com.how2java.test.Hero";
try{
Class test1 = Class.forName(className);
Class test2 = Hero.class;
Class test3 = new Hero().getClass();
System.out.println(test1 == test2);
System.out.println(test2 == test3);
System.out.println(test1 == test3);
}catch (Exception ex){ex.printStackTrace();}
}
}
class Hero{
String name;
static int a = 1;
static {
System.out.println("静态初始化块");
}
{
System.out.println("普通初始化块");
}
Hero(){
System.out.println("构造器");
}
String getName(){
return name;
}
}
结果
true
true
true
1 单独测试Class.forName
结果
静态初始化块
2 单独测试 Hero.Class
3 单独测试 new Hero().getClass
静态初始化块
普通初始化块
构造器
4 先初始化一个Hero对象,再测试这3种途径
更改代码如下:
Hero hero = new Hero();
Class test1 = Class.forName(className);
Class test2 = Hero.class;
Class test3 = new Hero().getClass();
4.1 Class.forName
静态初始化块
普通初始化块
构造器
4.2 Hero.Class
静态初始化块
普通初始化块
构造器
4.3 new Hero().getClass
静态初始化块
普通初始化块
构造器
普通初始化块
构造器