内省:(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法
public class app {
public static void main(String[] args) throws Exception {
Class<?> clz = gt.class; //获取类的字节码对象
Object obj = clz.newInstance(); //用object 类接收创建的对象并取名
//1.把某个类型转换成BeanInfo
BeanInfo beanInfo = Introspector.getBeanInfo(gt.class,Object.class);
//2.通过BeanInfo获取PropertyDescriptor
PropertyDescriptor[] p= beanInfo.getPropertyDescriptors();
//3.通过属性描述器获取属性信息
for (PropertyDescriptor pro : p) {//foreach 迭代所有属性的信息
System.out.println(pro.getReadMethod());//获取当前类中所有getter()方法
if(pro.getName().equals("b")) { //如果类中方法名字是b,调用set()方法赋值为true
pro.getWriteMethod().invoke(obj, true);
System.out.println(obj);
pro.getReadMethod().invoke(obj);
}
System.out.println(pro.getWriteMethod());//获取当前类中所有setter()方法
System.out.println(pro.getName()); //获取类中字段的名字
System.out.println("------------");
}
}
}
测试类
@Getter @Setter @ToString //使用注解别忘了导lombokjar包
public class gt {
private String a;
private boolean b;
private String name;
}