JAVA 反射 根据map中的key,value给对象赋值

JAVA 反射 根据map中的key,value给对象赋值
public <T> T select(Map<String, Object> map,Class<T> clazz) {
     try {
          Class<?> classZ = Class.forName(clazz.getName());
          //获取属性列表
          Field[] declaredFields = classZ.getDeclaredFields();
          //获取对象实例
          T o = (T) classZ.newInstance();
          for (Field field : declaredFields) {
              System.out.println(field.getName());
              if(map.containsKey(field.getName())){
                  Object s = map.get(field.getName());
                  //取消属性的访问权限控制,即使private属性也可以进行访问。
                  field.setAccessible(true);
                  field.set(o,s);
              }
          }
          System.out.println(o);
          return o;
      } catch (ClassNotFoundException e) {
          e.printStackTrace();
      } catch (IllegalAccessException e) {
          e.printStackTrace();
      } catch (InstantiationException e) {
          e.printStackTrace();
      }
      return null;
}
测试方法
public void send() {
    Map<String, Object> map = new HashMap<>();
    map.put("id", "v1");
    map.put("time", LocalDateTime.now());
    map.put("name", "v123");
    map.put("content", "v1234");
    select(map, AAA.class);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值