反射
1:根据字符串获取类的对应信息
2: 调用私有方法和获取私有属性
获取类的class变量 zz
1 Class zz = 类名.class;
2 Class zz = 对象.getclass( );
3 Class zz = Class.forName("类的全路径")
根据反射获取对象
如有 无参 public 的构造方法
Student student = (Student)zz.newInstance();
根据有参public 构造方法获取对象
获取构造方法
Constructor constructor = zz.getConstructor(参数类型.class , 参数类型.class ....) (构造方法的参数)
获取对象
Student student = (Student) constructor.newInstance(" "," ")(填入对应的有参构造方法的值)
根据有参private构造方法获取对象
获取构造方法
Constructor constructor = zz.getDeclaredConstructor(参数类型.class , 参数类型.class ....) (构造方法的参数)
constructor.setAccessible(true); //获得权限
获取对象
Student student = (Student) constructor.newInstance(" "," ")(填入对应的有参构造方法的值)
根据反射获取方法
获取public方法
Method method = zz.getMethod("方法名",参数类型.class,参数类型.class...)(参数类型为方法中的)
获取private的方法
Method method = zz.getDeclaredMethod("方法名",参数类型.class,参数类型.class...)(参数类型为方法中的)
方法有返回值时
Object object = method.invoke(student, "方法中的参数","方法中的参数1"....)
根据反射获取变量并赋值
非私有
Field field=zz.getField("属性名“) ;
赋值(给对应的对象的属性赋值)
field.set(student , "属性值")
私有
Field field=zz.getDeclaredField("属性名“) ;
field.setAccessible(true);
field.set(student , "私有属性值")