package com.vci.starter.web.util; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 类的操作工具 * @author weidy * @date 2019/11/23 10:18 AM */ public class ClassUtil { /** * 基本类型的映射 */ private static final Map, Class> primitiveMap = new HashMap<>(9); /** * 初始化的时候,将基础类型添加进去 */ static { primitiveMap.put(String.class, String.class); primitiveMap.put(Boolean.class, boolean.class); primitiveMap.put(Byte.class, byte.class); primitiveMap.put(Character.class, char.class); primitiveMap.put(Double.class, double.class); primitiveMap.put(Float.class, float.class); primitiveMap.put(Integer.class, int.class); primitiveMap.put(Long.class, long.class); primitiveMap.put(Short.class, short.class); primitiveMap.put(Date.class, Date.class); } /** * 判断基本类型 * @see java.lang.String * @see java.lang.Boolean#TYPE * @see java.lang.Character#TYPE * @see java.lang.Byte#TYPE * @see java.lang.Short#TYPE * @see java.lang.Integer#TYPE * @see java.lang.Long#TYPE * @see java.lang.Float#TYPE * @see java.lang.Double#TYPE * @see java.lang.Boolean#TYPE * @see byte * @see short * @see int * @see long * @see float * @see double * @param clazz 类 * @return boolean true表示为基本类型 */ public static boolean isPrimitive(Class clazz) { if (primitiveMap.containsKey(clazz)) { return true; } return clazz.isPrimitive(); } /** * 获取方法返回值类型 * @param tartget 目标对象的类 * @param fieldName 属性的名称 * @return Class 返回值类型 */ public static Class getElementType(Class tartget, String fieldName) { Class elementTypeClass = null; try { Type type = VciBaseUtil.getFieldForObject(fieldName,tartget).getGenericType(); ParameterizedType t = (ParameterizedType) type; String classStr = t.getActualTypeArguments()[0].toString().replace("class ", ""); if(classStr.contains("<")){ classStr = classStr.substring(classStr.lastIndexOf("<") + 1 ,classStr.indexOf(">")); } elementTypeClass = Thread.currentThread().getContextClassLoader().loadClass(classStr); } catch (ClassNotFoundException | SecurityException e) { throw new RuntimeException("get fieldName[" + fieldName + "] error", e); } return elementTypeClass; } }