反射: 简单的说,反射机制指的是程序在运行时,能够获取自身的信息(即:能够获取java中反射类的字节码). 在java中,只要给定类的名字,那么就可以通过反射机制来回去该类的所有信息.
反射的作用:
在运行时能够判断任意一个对象的所属类,
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意对象的方法;
在运行时创建新类的对象;
获取字节码的三种方式:
1. Class.forName(className)
2. 类名.class
3.this.getClass()
然后将字节码中的方法,变量,构造函数等 映射到相应的Method, filed , Constructor等类, 这些类提供了丰富的方法被我们所用.
例子:
public class Base {
static int num = 1;
static {
System.out.println("Base " + num);
}
}
public class Main {
public static void main(String[] args) {
// 不会初始化静态块
Class clazz1 = Base.class;
System.out.println("------");
// 会初始化
Class clazz2 = Class.forName("zzz.Base");
}
}