• 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框架

  • 相关阅读:
    「程序员思维训练」1. 读前声明
    获取apk的MD5或SHA1签名信息
    随用随记:超图小tips(长期更新ing)
    ajax上传大附件报错:413 Request Entity Too Large
    利用input file 上传文件调用ajax保存到服务器(含后台代码)
    软工课程总结
    开发体验心得总结
    结对项目 稳定版四则运算系统
    Week3 关于“微软必应词典客户端”的案例分析
    Week2 代码复查
  • 原文地址:https://www.cnblogs.com/xhk1228/p/3194838.html
Copyright © 2020-2023  润新知