Java中类型判断的几种方式

  1. 前言 在Java这种强类型语言中类型转换、类型判断是常常遇到的。今天就细数一下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。继承

  1. 总结 这些类型判断除了前两种比较常见,后面的两种用到的机会仍是有限的。不知道你用过这里面的哪几种?欢迎留言讨论。我是:java架构宝典,多多关注,更多知识分享。
相关文章
相关标签/搜索