实战小技巧15:如何判断类为基础类型or基础类型的包装类 您所在的位置:网站首页 java包装类对象 实战小技巧15:如何判断类为基础类型or基础类型的包装类

实战小技巧15:如何判断类为基础类型or基础类型的包装类

2023-09-04 23:15| 来源: 网络整理| 查看: 265

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

每天一个实战小技巧,判断类为基础类型or基础类型的包装类

判断一个类是否为基础类型属于常规操作了,一般我们遇到这种case,要怎么处理呢?

一个一个的if/else判断? 还是其他的操作姿势?

1. 基础类型判断

基础类型可以借助class类的isPrimitive方法来实现判定,使用姿势也简单

obj.getClass().isPrimitive()

如果返回true,那么这个对象就是基本类型

boolean char byte short int long float double void

但是请注意,对于封装类型,比如Long,访问isPrimitive返回的是false

2. 封装类型判断

那么封装类型可以怎么判断呢?难道一个一个的判定不成?

首先我们注意到Class#isPrimitive的方法签名,如下

/** * @see java.lang.Boolean#TYPE * @see java.lang.Character#TYPE * @see java.lang.Byte#TYPE * @see java.lang.Short#TYPE * @see java.lang.Integer#TYPE * @see java.lang.Long#TYPE * @see java.lang.Float#TYPE * @see java.lang.Double#TYPE * @see java.lang.Void#TYPE * @since JDK1.1 */ public native boolean isPrimitive();

上面的注释中,提到了Boolean#Type之类的静态成员,也就是说包装类型,都有一个TYPE的静态成员

比如boolean的是这个

@SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("boolean");

所以我们可以通过这个TYPE来判定,当前对象是否为封装对象

try { return ((Class) clz.getField("TYPE").get(null)).isPrimitive(); } catch (Exception e) { return false; }

如果Class对象没有TYPE字段,那么就不是封装类,直接抛异常,返回false;当然这种通过异常的方式来判定,并不优雅;但是写法上比我们一个一个的if/else进行对比,要好得多了

系列博文:

实战小技巧1:字符串占位替换-JDK版 实战小技巧2:数组与list互转 实战小技巧3:字符串与容器互转 实战小技巧4:优雅的实现字符串拼接 实战小技巧5:驼峰与下划线互转 实战小技巧6:枚举的特殊用法 实战小技巧7:排序比较需慎重 实战小技巧8:容器的初始化大小指定 实战小技巧9:List.subList使用不当StackOverflowError 实战小技巧10:不可变容器 实战小技巧11:数组拷贝 实战小技巧12:数字格式化 实战小技巧13:进制转换很简单 实战小技巧14:配置文件Properties II. 其他 1. 一灰灰Blog: liuyueyi.github.io/hexblog

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

2. 声明

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

微博地址: 小灰灰Blog QQ: 一灰灰/3302797840 微信公众号: 一灰灰blog


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有