反射就是把java类中的各种成分映射成相应的java类
例如:一个java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个java类来表示。就像汽车是一个类,汽车中的发动机,变速箱等等也是一个的类。
表示java类的Class类显然要提供一系列的方法,来获取得其中的变量和方法,构造方 法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field,Method,Constructor,Package等等
得到一个类的Class对象,然后通过Class对象来解析类的结构,比如说得到这个类有什么方法,有什么属性。得到这些方法或属性后,可以调用指定对象上的这个方法,也可以给指定对象上的这个属性赋值。
T t = new T();
Class c = t.getClass(); //得到T这个类的class对象
Method m = c.getDeclaredMethod("getName"); //得到getName方法
m.invoke(t); //调用getName方法,并且将this指向t这个对象 |