通过反射重新set对象值

通过反射重新给当前对象赋值
 /* 通过反射重新set值
     * @param hashMap 存储 字段名 -- 字段对应值
     * @return void
     */
    public <T> void getField(T data) {
        Class<?> aClass = data.getClass();
        Field[] fields = aClass.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            // 得到字段属性名
            String name = field.getName();
            try {
                // 得到字段值
                PropertyDescriptor propertyDescriptor = new PropertyDescriptor(name, aClass);
                Method readMethod = propertyDescriptor.getReadMethod();
                Object value = readMethod.invoke(data);
                ZxdDictConversionColumn annotation = field.getAnnotation(ZxdDictConversionColumn.class);
                if (annotation != null && StringUtil.isNotBlank(annotation.key()) && value != null) {
                    //重新赋值数据
                    String value = "重新赋值数据"
                    setPropertyVal(field.getName(), data,value );
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    }
    //反射set方法
    private static void setPropertyVal(String propertyName, Object s, Object newVal)
            throws IntrospectionException, IllegalAccessException, InvocationTargetException {
        PropertyDescriptor pd = new PropertyDescriptor(propertyName, s.getClass());
        Method setMethod = pd.getWriteMethod();
        setMethod.invoke(s, newVal);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值