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 ClassUtilForVCI {
|
/**
|
* 基本类型的映射
|
*/
|
private static final Map<Class<?>, 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 String
|
* @see Boolean#TYPE
|
* @see Character#TYPE
|
* @see Byte#TYPE
|
* @see Short#TYPE
|
* @see Integer#TYPE
|
* @see Long#TYPE
|
* @see Float#TYPE
|
* @see Double#TYPE
|
* @see 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;
|
}
|
}
|