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);
}
}