package com.vci.ubcs.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;
|
|
public class ClassUtil {
|
private static final Map<Class<?>, Class<?>> primitiveMap = new HashMap(9);
|
|
public ClassUtil() {
|
}
|
|
public static boolean isPrimitive(Class<?> clazz) {
|
return primitiveMap.containsKey(clazz) ? true : clazz.isPrimitive();
|
}
|
|
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);
|
return elementTypeClass;
|
} catch (SecurityException | ClassNotFoundException var6) {
|
throw new RuntimeException("get fieldName[" + fieldName + "] error", var6);
|
}
|
}
|
|
static {
|
primitiveMap.put(String.class, String.class);
|
primitiveMap.put(Boolean.class, Boolean.TYPE);
|
primitiveMap.put(Byte.class, Byte.TYPE);
|
primitiveMap.put(Character.class, Character.TYPE);
|
primitiveMap.put(Double.class, Double.TYPE);
|
primitiveMap.put(Float.class, Float.TYPE);
|
primitiveMap.put(Integer.class, Integer.TYPE);
|
primitiveMap.put(Long.class, Long.TYPE);
|
primitiveMap.put(Short.class, Short.TYPE);
|
primitiveMap.put(Date.class, Date.class);
|
}
|
}
|