每天一个实战小技巧,
判断类为基础类型or基础类型的包装类
判断一个类是否为基础类型属于常规操作了,一般我们遇到这种case,要怎么处理呢?
一个一个的if/else判断? 还是其他的操作姿势?
1. 基础类型判断
基础类型可以借助class类的isPrimitive
方法来实现判定,使用姿势也简单
1 | obj.getClass().isPrimitive() |
如果返回true,那么这个对象就是基本类型
- boolean
- char
- byte
- short
- int
- long
- float
- double
- void
但是请注意,对于封装类型,比如Long,访问isPrimitive返回的是false
2. 封装类型判断
那么封装类型可以怎么判断呢?难道一个一个的判定不成?
首先我们注意到Class#isPrimitive
的方法签名,如下
1 | /** |
上面的注释中,提到了Boolean#Type之类的静态成员,也就是说包装类型,都有一个TYPE的静态成员
比如boolean的是这个
1 | @SuppressWarnings("unchecked") |
所以我们可以通过这个TYPE来判定,当前对象是否为封装对象
1 | try { |
如果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: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog
II. 其他
1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog