1、Java中的反射机制:1、反射的应用场合在编译时根本无法知道该对象或类可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息2、反射的作用获取已装载类的属性信息获取已装载类的方法获取已装载类的构造方法信息3、主要由以下类来实现反射机制,这些类存在于java.lang.reflect/Class类:代表一个类/Field类:代表类的成员变量(属性)/Method类:代表类的成员方法/Constructor类:代表类的构造方法Personper=newPerson(“gao“,27);ClassperCls=Class.forName(“fanshe.Person“);Fieldfield
2、Name=perCls.getField(“name“);/对于public的属性可以调用get(per)直接返回该值StringstrPerson=fieldName.get(per).toString();/对于private类型的age,则不能直接返回,需要暴力反射三步走:1、获得Filed对象时要调用getDeclaredField方法。2、调用field对象的setAccessible方法取消限制访问符的限制。3、最后再调用get方法获得其值。FieldfieldAge=perCls.getDeclaredField(“age“);fieldAge.setAccessible(tru
3、e);fieldAge.set(per,23);System.out.println(fieldAge.get(per);/反射构造函数Constructorcon=perCls.getConstructor(String.class,int.class);Objectperson=con.newInstance(“hehe“,34);Methodmethod=perCls.getMethod(“setName“,String.class);method.invoke(per,“zhang“);System.out.println(person.toString();System.out.println(strPerson+fieldAge.get(per);