• 基础巩固 反射(一)


    publicclass Reflect {

    publicstaticvoid main(String[] args) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

    Person person = new Person("cristal",22);

    Class clazz = person.getClass();

    Field[] fields = clazz.getDeclaredFields();

    for(Field field : fields){

    String key = field.getName();

    PropertyDescriptor descriptor = new PropertyDescriptor(key,clazz);

    Method method = descriptor.getReadMethod();

    Object value = method.invoke(person);

    System.out.println(key +":"+value);

     

    }

    }

     

    }

    class Person implements Serializable{

    privatestaticfinallongserialVersionUID = -3273783136645942309L;//添加序列化会报错  因为 在PropertyDescriptor descriptor = new PropertyDescriptor(key,clazz会寻找readMethod,然后serialVersionUID并不会有相应get()方法

    private String name;

    privateintage;

    public Person(String name, inti) {

    this.name = name;

    this.age = i;

    }

    public String getName() {

    returnname;

    }

    publicvoid setName(String name) {

    this.name = name;

    }

    publicint getAge() {

    returnage;

    }

    publicvoid setAge(intage) {

    this.age = age;

    }

     

    }

  • 相关阅读:
    90. 子集 II
    274. H 指数
    1291. 顺次数
    StreamWriter 跟BinaryWriter的区别
    非常有用的正则表达式
    linux菜单恢复
    VS2008的诡异问题
    一些常用算法 练手的的代码
    string 类型为空的处理方法
    left jion 的多表连接用法。
  • 原文地址:https://www.cnblogs.com/Luke-wang/p/9288607.html
Copyright © 2020-2023  润新知