HutoolUtil

EnumUtil方法

//获得枚举类中各枚举对象下指定字段的值
EnumUtil.getFiledNames(xxx.class,"");
//获取枚举类对象中各个字段的值
EnumUtil.getFiledNames(xxx.class);

BeanUtil.getFieldValue

public static Object getFieldValue(Object bean, String fieldNameOrIndex) {
        if (null == bean || null == fieldNameOrIndex) {
            return null;
        }

        if (bean instanceof Map) {
            return ((Map<?, ?>) bean).get(fieldNameOrIndex);
        }

        // 是否是索引
        boolean isIndex = fieldNameOrIndex.matches("\\d");

        if (isIndex) {
            if (bean instanceof Collection) {
                return CollUtil.get((Collection<?>) bean, Integer.parseInt(fieldNameOrIndex));
            }
            if (ArrayUtil.isArray(bean)) {
                return ArrayUtil.get(bean, Integer.parseInt(fieldNameOrIndex));
            }
        } else {
            // 不是索引 则将集合每个对象的属性拿出来封装成新的集合
            if (bean instanceof Collection) {
                Collection<?> collection = (Collection<?>) bean;
                List<Object> result = new ArrayList<>(collection.size());
                for (Object o : collection) {
                    result.add(getFieldValue(o, fieldNameOrIndex));
                }
                return result;
            }
            if (ArrayUtil.isArray(bean)) {
                int length = Array.getLength(bean);
                Object[] result = new Object[length];
                for (int i = 0; i < length; i++) {
                    result[i] = getFieldValue(ArrayUtil.get(bean, i), fieldNameOrIndex);
                }
                return result;
            }
        }

        // 普通Bean对象
        return ReflectUtil.getFieldValue(bean, fieldNameOrIndex);
    }

BeanUtil.setFieldValue

/**
     * 设置字段值,,通过反射设置字段值,并不调用setXXX方法<br>
     * 对象同样支持Map类型,fieldNameOrIndex即为key
     *
     * @param bean             Bean
     * @param fieldNameOrIndex 字段名或序号,序号支持负数
     * @param value            值
     */
    public static void setFieldValue(Object bean, String fieldNameOrIndex, Object value) {
        if (bean instanceof Map) {
            ((Map) bean).put(fieldNameOrIndex, value);
        } else if (bean instanceof List) {
            CollUtil.setOrAppend((List) bean, Convert.toInt(fieldNameOrIndex), value);
        } else if (ArrayUtil.isArray(bean)) {
            ArrayUtil.setOrAppend(bean, Convert.toInt(fieldNameOrIndex), value);
        } else {
            // 普通Bean对象
            ReflectUtil.setFieldValue(bean, fieldNameOrIndex, value);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值