前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 工具类之基本元素判断

Spring 工具类之基本元素判断

原创
作者头像
一灰灰blog
修改2021-01-18 14:26:54
1.3K0
修改2021-01-18 14:26:54
举报
文章被收录于专栏:小灰灰小灰灰

Spring 工具类之基本元素判断

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

代码语言:txt
复制
// Java基本数据类型及包装类型判断
org.springframework.util.ClassUtils#isPrimitiveOrWrapper

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

<!-- more -->

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

基本类型判定:ClassUtils

代码语言:txt
复制
public static boolean isPrimitiveOrWrapper(Class<?> clazz) {
	Assert.notNull(clazz, "Class must not be null");
	return (clazz.isPrimitive() || isPrimitiveWrapper(clazz));
}

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

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

代码语言:txt
复制
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. 一灰灰 Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • II. 其他
    • 1. 一灰灰 Blog: https://liuyueyi.github.io/hexblog
      • 2. 声明
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档