zoukankan      html  css  js  c++  java
  • 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框架

  • 相关阅读:
    99%的人都理解错了HTTP中GET与POST的区别
    CSS3 Border-image
    Tween.js的使用示例
    HTML5的postMessage使用记要
    Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器
    nodejs ejs 请求路径和静态资源文件路径
    JS逗号运算符的用法详解
    toStirng()与Object.prototype.toString.call()方法浅谈
    正则表达式之 贪婪与非贪婪模式
    利用符号进行的类型转换,转换成数字类型 ~~
  • 原文地址:https://www.cnblogs.com/xhk1228/p/3194838.html
Copyright © 2011-2022 走看看