Spring 工具类之根本元素判断

理论业务开发中偶然会遇到判断一个对象是否为根本数据类型,除了咱们自老老实实的本人写之外,也能够借助 Spring 的 BeanUtils 工具类来实现

// Java根本数据类型及包装类型判断org.springframework.util.ClassUtils#isPrimitiveOrWrapper// 扩大的根本类型判断org.springframework.beans.BeanUtils#isSimpleProperty

<!-- more -->

这两个工具类的实现都比拟清晰,源码看一下,可能比咱们本人实现要优雅很多

根本类型断定: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,这个又是什么货色呢?

下篇博文认真撸一下它

II. 其余

1. 一灰灰 Blog: https://liuyueyi.github.io/he...

一灰灰的集体博客,记录所有学习和工作中的博文,欢送大家前去逛逛

2. 申明

尽信书则不如,以上内容,纯属一家之言,因集体能力无限,不免有疏漏和谬误之处,如发现 bug 或者有更好的倡议,欢送批评指正,不吝感谢

  • 微博地址: 小灰灰 Blog
  • QQ: 一灰灰/3302797840

3. 扫描关注

一灰灰 blog