public class TypeUtil {
private TypeUtil() {
}
private static Set<Class<?>> singleValueTypeSet = new HashSet<Class<?>>();
/**
* 添加一个类型到单值集合中。
*
* @param clz
*/
public static void add2SingaleValueMap(Class<?> clz) {
singleValueTypeSet.add(clz);
}
/**
* 是否是枚举类型。
*
* @param clz
* @return
*/
public static boolean isEnum(Class<?> clz) {
return clz.isEnum() || (clz.getSuperclass() != null && clz.getSuperclass().isEnum());
}
/**
* 是否是单值的基本类型。
*
* @param clz
* @return
*/
public static boolean isSingleValueType(Class<?> clz) {
return singleValueTypeSet.contains(clz);
}
/**
* 是否是数组,List,Set类型之一。
*
* @param clz
* @return
*/
public static boolean isCollectionType(Class<?> clz) {
return clz.isArray() || Collection.class.isAssignableFrom(clz);
}
/**
* 是否是Map类型。
*
* @param clz
* @return
*/
public static boolean isMapType(Class<?> clz) {
return Map.class.isAssignableFrom(clz);
}
/**
* 是否是Map.Entry类型。
*
* @param clz
* @return
*/
public static boolean isEntryType(Class<?> clz) {
return Map.Entry.class.isAssignableFrom(clz);
}
/**
* 是否是八种基本类型之一。
*
* @param clz
* @return
*/
public static boolean isPrimitiveType(Class<?> clz) {
return clz.isPrimitive();
}
/**
* 判断是否是使用了XBlinkAsAttribute注解的字段。
*
* @param field
* @return
*/
public static boolean isAttributeField(Field field) {
return null != field.getAnnotation(XBlinkAsAttribute.class);
}
/**
* 判断是否是使用了XBlinkConverter注解的字段。
*
* @param field
* @return
*/
public static boolean isCustomizedField(Field field) {
return null != field.getAnnotation(XBlinkConverter.class);
}
/**
* 尝试寻找并加载这个类。
*
* @param clzName
* @return
*/
public static Class<?> tryFindThisClass(String clzName) {
Class<?> clz = null;
try {
clz = Class.forName(clzName);
} catch (ClassNotFoundException e) {
throw new RuntimeException(String.format("无法加载[%s]这个类。", clzName), e);
}
return clz;
}
}
参考:xblink框架