Spring 工具类之基本元素判断

Spring 工具类之基本元素判断

实际业务开发中偶尔会遇到判断一个对象是否为基本数据类型,除了我们自老老实实的自己写之外,也可以借助 Spring 的 BeanUtils 工具类来实现

// Java基本数据类型及包装类型判断
org.springframework.util.ClassUtils#isPrimitiveOrWrapper

// 扩展的基本类型判断
org.springframework.beans.BeanUtils#isSimpleProperty

这两个工具类的实现都比较清晰,源码看一下,可能比我们自己实现要优雅很多

基本类型判定:ClassUtils

public static boolean isPrimitiveOrWrapper(Class<?> clazz) {
	Assert.notNull(clazz, "Class must not be null");
	return (clazz.isPrimitive() || isPrimitiveWrapper(clazz));
}

注意:非包装类型,直接使用class.isPrimitive() 原生的 jdk 方法即可

包装类型,则实现使用 Map 来初始化判定

private static final Map<Class<?>, Class<?>> primitiveWrapperTypeMap = new IdentityHashMap<>(8);

static {
	primitiveWrapperTypeMap.put(Boolean.class, boolean.class);
	primitiveWrapperTypeMap.put(Byte.class, byte.class);
	primitiveWrapperTypeMap.put(Character.class, char.class);
	primitiveWrapperTypeMap.put(Double.class, double.class);
	primitiveWrapperTypeMap.put(Float.class, float.class);
	primitiveWrapperTypeMap.put(Integer.class, int.class);
	primitiveWrapperTypeMap.put(Long.class, long.class);
	primitiveWrapperTypeMap.put(Short.class, short.class);
	primitiveWrapperTypeMap.put(Void.class, void.class);
}


public static boolean isPrimitiveWrapper(Class<?> clazz) {
	Assert.notNull(clazz, "Class must not be null");
	return primitiveWrapperTypeMap.containsKey(clazz);
}

这里非常有意思的一个点是这个 Map 容器选择了IdentityHashMap,这个又是什么东西呢?


作者:一灰灰
来源:掘金

  • 发表于 2021-03-02 17:06
  • 阅读 ( 61 )

0 条评论

请先 登录 后评论
z老师
z老师

131 篇文章

作家榜 »

  1. NX小编 1251 文章
  2. 58沈剑 325 文章
  3. 热爱技术的小仓鼠 231 文章
  4. 奈学教育 154 文章
  5. z老师 131 文章
  6. 五十三 59 文章
  7. 李希沅 | 奈学教育 52 文章
  8. 江帅帅 | 奈学教育 32 文章