yuxc
2023-05-06 a6e6575bc3d668e14009ed0e931a376f1a4d86ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);
    }
}