
com.xwc1125.common.util.reflect.BeanUtils Maven / Gradle / Ivy
The newest version!
package com.xwc1125.common.util.reflect;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @Description:
* @Author: xwc1125
* @Date: 2021/1/22 15:50
* @Copyright Copyright@2021
*/
public class BeanUtils {
/**
* 获取所有的Field
*
* @param clazz
* @return
*/
public static Field[] getAllFields(Class> clazz) {
List fieldList = new ArrayList<>();
while (clazz != null) {
fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
clazz = clazz.getSuperclass();
}
Field[] fields = new Field[fieldList.size()];
fieldList.toArray(fields);
return fields;
}
/**
* 获取对象的字段列表
*
* @param c 操作类。用于获取类中的方法
* @return
*/
public static String[] getFields(Class> c) {
return getFields(c, null);
}
/**
* 获取对象的字段列表
*
* @param c 操作类。用于获取类中的方法
* @param filterField 需要过滤的字段
* @return
*/
public static String[] getFields(Class> c, String[] filterField) {
// 获取类中的全部定义字段
Field[] fields = getAllFields(c);
ArrayList fieldNames = new ArrayList();
// 循环遍历字段,获取字段相应的属性值
for (Field field : fields) {
// 假设不为空。设置可见性
field.setAccessible(true);
String fieldName = field.getName();
if (fieldName.equals("serialVersionUID")) {
continue;
}
boolean isFilter = false;
if (filterField != null && filterField.length > 0) {
for (String f : filterField) {
if (fieldName.equalsIgnoreCase(f)) {
isFilter = true;
break;
}
}
}
if (!isFilter) {
fieldNames.add(fieldName);
}
}
String[] strings = new String[fieldNames.size()];
fieldNames.toArray(strings);
return strings;
}
/**
* 获取对象的字段列表
*
* @param obj 操作对象
* @return
*/
public static FieldValues getFieldValues(Object obj) {
return getFieldValues(obj, null);
}
/**
* 获取对象的字段列表
*
* @param obj 操作对象
* @param filterField 需要过滤的字段
* @return
*/
public static FieldValues getFieldValues(Object obj, String[] filterField) {
// 获取类中的全部定义字段
Class> cls = obj.getClass();
Field[] fields = getAllFields(cls);
FieldValues fieldValues = new FieldValues();
// 循环遍历字段,获取字段相应的属性值
for (Field field : fields) {
// 假设不为空。设置可见性
field.setAccessible(true);
String fieldName = field.getName();
boolean isFilter = false;
if (fieldName.equals("serialVersionUID")) {
continue;
}
if (filterField != null && filterField.length > 0) {
for (String f : filterField) {
if (fieldName.equalsIgnoreCase(f)) {
isFilter = true;
break;
}
}
}
if (!isFilter) {
try {
Object o = field.get(obj);
fieldValues.addFieldValue(fieldName, o);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return fieldValues;
}
/**
* 将KV转换到对象上
*
* @param cls
* @param fields
* @param values
* @param
* @return
* @throws Exception
*/
public static T parseFieldValues(Class cls, String[] fields, List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy