`

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框架
分享到:
评论

相关推荐

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    Aleppo提供一些采用JavaScript编写的一些常用工具类

    Aleppo可能包含用于类型检查和转换的工具,如`Aleppo.TypeUtil`,可能有`isString()`, `isNumber()`等方法,帮助开发者安全地处理不同类型的数据。 4. **数组操作**: - 针对数组操作,Aleppo可能提供了扩展的数组...

    Hutool 参考文档.pdf

    IO工具类(IoUtil)、文件工具类(FileUtil)、文件类型判断(FileTypeUtil)、文件读取(FileReader)、文件写入(FileWriter)和文件监听(WatchMonitor)则为文件操作提供了便捷的方法。 字符串工具(StrUtil)...

    Hutool的api等可参考的文档

    - **类型转换**:`Convert`工具类提供了丰富的类型转换方法,包括自定义类型转换。 - **日期时间**:`DateUtil`和`DateTimeIO`提供了日期时间的处理和序列化/反序列化功能。 - **IO流**:`IoUtil`包含各种IO流...

    [资源]as3corelib库及帮助文档

    8. **其他工具**:还有一些通用的工具类,如TypeUtil,提供类型检查和转换的方法;EndianUtil,用于字节序的转换;以及ArrayUtil,提供数组操作的辅助函数。 在使用as3corelib时,开发者可以根据需要选择导入相关的...

    java_typeutil.zip_java typeutils

    This project is a java reflection toolkit, simplify type operations such as set/get property values by name.

    Hutool JAVA工具集 v4.1.2

    - `TypeUtil`工具类提供了类型转换的功能,包括对象转基本类型、字符串转对象等,避免了因类型转换错误导致的异常。 11. **XML处理**: - `XmlUtil`工具类提供了XML文档的读写、解析和操作功能,简化了XML数据的...

    as3corelib.swc

    8. **类型检查**:`com.adobe.utils.TypeUtil` 提供了一些静态方法,可以用来检查变量的类型,确保代码的健壮性。 9. **字符串操作**:`com.adobe.utils.StringUtil` 类包含了一些字符串处理的辅助函数,如比较、...

    C#常用基础工具类源码

    整理了几个在DotNet2.0中C#开发常用的基础工具类,内容如下:StringUtil、ParseUtil、TypeUtil、ByteUtil、NumUtil、XmlUtil、RegexUtil、HashUtil、ColorUtil。

    swagger-core_2.9.1-1.3.0.jar

    com/wordnik/swagger/core/util/TypeUtil.scala com/wordnik/swagger/model/AuthorizationModels.scala com/wordnik/swagger/model/SwaggerModels.scala com/wordnik/swagger/model/SwaggerSerializers.scala ...

Global site tag (gtag.js) - Google Analytics