反射-通过反射获取成员变量并使用
要点: 在反射面前,一切都是赤裸裸的!!!
问: 我们的反射操作是不是都是借助于Class类来实现???
Class类提供了一系列使用反射的工具???
1.通过反射获取成员变量
java.lang
类 Class<T>
java.lang.Object
继承者 java.lang.Class<T>
Field getField(String name) //name是字段的名称
返回一个 Field 对象,
它反映此 Class 对象所表示的类或接口的指定公共成员字段。
另一个方法:这个方法是获取所有的字段
Field[] getFields()
返回一个包含某些 Field 对象的数组,这些对象反映此
Class 对象所表示的类或接口的所有可访问公共字段。
2.
Class cz =Class.forName("cn.itcast.Person"); //得到Apple类的Class对象即字节码对象:获取Person类的字节码文件
Constructor c =clazz.getConstructor(String.class,int.class);//获取有参构造,int.class 表示这个参数是一个字节码文件
Person p =(Person) c.newInstance("张三",23);
Field f =clazz.getField("name");
//修改值
f.set(p,"李四");
System.out.println(p);
3.暴力反射获取字段
4.
|
|