JAVA--反射工具类

package com.gildata.task.platform.common.util;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;

/**
 * 反射工具类
 *
 * @author: zhaoyl
 * @since: 2017年12月14日 上午9:03:07
 * @history:
 */
public class ReflectionUtilEX {

    /**
     * 获取某个对象的所有属性
     *
     * @param object
     * @return
     * @create: 2017年12月14日 上午9:03:43 zhaoyl
     * @history:
     */
    public static Field[] getAllFields(Object object) {
        Class clazz = object.getClass();
        return getAllFields(clazz);
    }

    /**
     * 将实体类的集合转换成Map集合
     *
     * @param entityList
     * @return
     * @create: 2017年12月14日 上午9:06:11 zhaoyl
     * @history:
     */
    public static List> convertEntityListToMapList(List entityList) {
        if (null == entityList || entityList.size() <= 0) {
            return null;
        }
        List> mapList = new ArrayList<>();
        for (Object t : entityList) {
            mapList.add(ReflectionUtilEX.convertEntityToMap(t));
        }
        return mapList;
    }

    /**
     * 将对象转换成Map
     *
     * @param obj
     * @return
     * @create: 2017年12月14日 上午9:11:56 zhaoyl
     * @history:
     */
    public static Map convertEntityToMap(Object obj) {
        if (null == obj) {
            return null;
        }
        Map map = new HashMap<>();
        try {
            Field[] fields = ReflectionUtilEX.getAllFields(obj);
            for (Field field : fields) {
                field.setAccessible(true);
                if (!"serialVersionUID".equals(field.getName())) {
                    map.put(field.getName(), field.get(obj));
                }
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return map;
    }

    /**
     * 将Map转换成对象
     *
     * @return
     * @create: 2018年3月22日 下午1:45:23 zhaoyl
     * @history:
     */
    public static  T convertMapToEntity(Map map, Class clazz) {
        try {
            T t = clazz.newInstance();
            Field[] fields = ReflectionUtilEX.getAllFields(clazz);
            for (Field field : fields) {
                field.setAccessible(true);
                String fieldName = field.getName();
                String fieldType = field.getType().getSimpleName();
                boolean isStatic = Modifier.isStatic(field.getModifiers());
                boolean isFinal = Modifier.isFinal(field.getModifiers());
                if (!"serialVersionUID".equals(fieldName) && !isStatic && !isFinal) {
                    field.set(t, convertFieldType(fieldType, map.get(fieldName)));
                }
            }
            return t;
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return null;
    }

    /* *
     * 

Description: 获取对象的某个属性值

* * @author zhaoyl * @version v1.0 * @date 2020-02-19 11:58 * @params [target, fieldName] * @return java.lang.Object */ public static Object getProperty(Object target, String fieldName) { try { Field[] fields = ReflectionUtilEX.getAllFields(target.getClass()); for (Field field : fields) { field.setAccessible(true); if (fieldName.equals(field.getName())) { return field.get(target); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } private 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; } private static Object convertFieldType(String type, Object obj) { if (null == obj || "".equals(obj)) { return null; } String str = obj.toString(); if ("String".equals(type)) { return str; } else if ("Integer".equals(type)) { return Integer.parseInt(str); } else if ("Long".equals(type)) { return Long.parseLong(str); } else if ("Double".equals(type)) { return Double.parseDouble(str); } else if ("Float".equals(type)) { return Float.parseFloat(str); } else if ("Short".equals(type)) { return Short.parseShort(str); } return obj; } }

你可能感兴趣的:(反射,java)