前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java instanceof用法_Java中类型判断的几种方式

java instanceof用法_Java中类型判断的几种方式

作者头像
用户7886150
修改2021-04-23 10:47:17
1.4K0
修改2021-04-23 10:47:17
举报
文章被收录于专栏:bit哲学院

参考链接: Java instanceof

1. 前言 

 在Java这种强类型语言中类型转换、类型判断是经常遇到的。今天就细数一下Java中类型判断的方法方式。 

 2. instanceof 

 instanceof是Java的一个运算符,用来判断一个对象是否为一个类的实例 。用法: 

  boolean isInstance = obj instanceof Class

 其中 obj 为一个对象实例,Class 为类名或者一个接口名,当 obj 为 Class 的实例,或是其子类实例,或是其接口的实现类实例,都返回 true,否则返回false。 

 需要注意的是obj 必须为引用类型,不能是基本类型,下面的式子是无法编译的: 

  int integer = 0;

// 编译时会报错

boolean isInstance = integer instanceof Number

  此外编译器会检查instanceof表达式中的 obj 能否能转换成右边的Class类型,如果无法转换则会直接报错,如果不能确定类型,也会通过编译。 

 3. Class.isInstance 

     // Class.isInstance 等效于instanceof 操作符

  boolean ret = entity instanceof UserInfo;

  boolean isInstance = UserInfo.class.isInstance(entity);

 如上所示Class.isInstance 等效于instanceof 操作符。该方法是在Java 1.1中引入的,因为它可以动态地使用。如果参数不为null,并且可以在不引发ClassCastException的情况下成功将其强制转换为左边的引用类型时将返回true。 

 4. Class.isAssignableFrom 

 该方法的调用者和参数都是Class对象,调用者为父类,参数为本身或者其子类。 

  boolean assignableFrom = List.class.isAssignableFrom(ArrayList.class);

 经常用来判断父子继承关系,我在Mybatis插件教程一文中就用到了该方法来判断某个类是不是某个接口的实现类。 

 5. Class.isPrimitive 

 此方法主要用来判断Class是否为原始类型(boolean、char、byte、short、int、long、float、double)。 

  //true

boolean primitive = int.class.isPrimitive();

 它是来解决我们在本文章节2中提到的基础类型判断的问题。但是它只能判断某类型是不是基础类型,并不是具体到某个类型的。 

  但是请注意,基础类型的包装类型用此方法判断结果会返回false。 

 6. 总结 

 这些类型判断除了前两种比较常见,后面的两种用到的机会还是有限的。不知道你用过这里面的哪几种?欢迎留言讨论。我是:码农小胖哥,多多关注,更多知识分享。 

 关注微信公众号:Felordcn 获取更多干货

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档