所谓反射,就是指对象的反向操作。
在这里说一下“正”的操作,我们导入一个包,然后有了类才能产生实例化对象,如果没有包就找不到这个类,例如:定义一个Date类,如果没有这个导入Date类的包,就无法实例化对象。
所谓“反”是指根据对象来取得对象来源的信息,例如:大明的儿子小明,把王五的车画了,王五很生气,让小明带着王五去找他的家人讨个说法。这就是通过儿子这个对象找到对象的来源信息,是谁家的孩纸。而这个“反”的操作的核心处理在一个Object类的一个操作方法:
- 取得Class对象:public final Class<?> getClass()
-该方法返回的是一个Class类的对象,这个Class描述的就是类。
例子:package 反射;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.getClass());
}
}
结果:class java.util.Date
也就是通过对象获得了对象的来源信息,这就是“反”的本质。
在反射的世界里面它不再看中的是一个对象,而是对象身后的组成(类,构造,普通,成员等)。