Class类

成员方法

  1. public Filed getFiledString name);<br /> 返回一个Filed对象,仅公共成员变量<br /> public Filed getDeclaredFiledString name);<br /> 返回一个Filed对象,可获取私有成员变量<br /> public Filed[] getDeclaredFileds();<br /> 返回此类所有(含私有)变量的数组

Method类

属性类,用来表示所有的域(属性,成员变量)对象的

概述

属于java.base模块下的java.lang.reflect包下的类

成员方法

  1. public void setAccessible(boolean flag); 是否开启暴力反射(true:开启)<br /> public void set (Object obj, Object value); 设置obj对象的指定属性值为value

案例

  1. public class ReflectDemo3 {
  2. public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchFieldException {
  3. //需求:通过反射获取成员变量并使用
  4. //1.获取Student类的字节码文件对象
  5. Class clazz = Class.forName("Note.Student");
  6. //2.通过字节码文件对象获取构造器对象,然后创建学生类对象
  7. /* Constructor con = clazz.getConstructor();
  8. Student stu = (Student) con.newInstance();*/
  9. Student stu = (Student) clazz.getConstructor().newInstance();
  10. //3.设置学生对象是各个属性值
  11. //3.1设置姓名
  12. Field filed1 = clazz.getDeclaredField("name");
  13. filed1.setAccessible(true);
  14. filed1.set(stu,"zhagsan");
  15. //3.2设置年龄
  16. Field filed2 = clazz.getDeclaredField("id");
  17. filed2.setAccessible(true);
  18. filed2.set(stu,30);
  19. //4.打印学生对象
  20. System.out.println(stu);
  21. }
  22. }