实战小技巧15:如何判断类为基础类型or基础类型的包装类 | 您所在的位置:网站首页 › java包装类对象 › 实战小技巧15:如何判断类为基础类型or基础类型的包装类 |
这是我参与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 实验室设备网 版权所有 |