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

  • 相关阅读:
    .NETCORE CONSUL
    Jenkins+github自动化部署.Net Core程序到Docker
    CleanArchitecture原则CQRS模式
    BFF架构了解
    .NET 生态系统的蜕变之 .NET 6
    Deislabs开源 使用WebAssembly打造的PaaS项目Hippo
    微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能
    单体应用 适合采用 dapr 构建吗?
    微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版
    [LeetCode] 1248. Count Number of Nice Subarrays 统计优美子数组
  • 原文地址:https://www.cnblogs.com/xhk1228/p/3194838.html
Copyright © 2011-2022 走看看