TypeUtil 提供方法来判断对象或类的类型

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框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值