在Java这种强类型语言中类型转换、类型判断是经常遇到的。今天就细数一下Java中类型判断的方法方式。拉勾IT课小编为大家提供java种类型判断方式。

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类型,如果无法转换则会直接报错,如果不能确定类型,也会通过编译。

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。

Class.isAssignableFrom

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

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

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

Class.isPrimitive

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

//true
boolean primitive = int.class.isPrimitive();

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

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

总结

这些类型判断除了前两种比较常见,后面的两种用到的机会还是有限的

java 判断类型_Java中类型判断的几种方式相关推荐

  1. java多线程区别_Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  2. java 时间戳 对比_Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...

  3. java 常量定义_Java中常量定义的几种方式

    编程中使用常量的优点: 常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制并且提高代码的复用率,方便修改,直接通过常量类就能得到.不过我觉得提取出来并不会有利于代码性能提升,因为常量分配在 ...

  4. java简单多线程_java中实现多线程的几种方式(简单实现)

    一.以下只是简单的实现多线程 1:继承Thread 2:实现 Runnable 3:实现callable 如果需要返回值使用callable,如果不需要返回最好使用runnable,因为继承只能单继承 ...

  5. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  6. java自动装配_Spring中自动装配的4种方式

    Spring容器可以在不使用和元素的情况下自动装配相互协作的bean之间的关系,助于减少编写一个大的基于Spring的应用程序的XML配置的数量使用元素的autowire属性为一个bean定义指定自动 ...

  7. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  8. java判断类型_Java中类型判断的几种方式

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  9. java判断单选按钮_java中如何判断是哪个单选框被选中了?

    java中如何判断是哪个单选框被选中了? 來源:互聯網  2010-08-12 22:14:48  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: 我 ...

最新文章

  1. 我的随笔---高亮规范
  2. android9系统webview崩溃,Android WebView已开始在Android 9上崩溃
  3. [转]order by 多个排序条件
  4. CAS去掉HTTPS认证
  5. imagex使用方法_Microsoft OneDrive 的使用心得,真香
  6. 【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)
  7. telegram定时消息_ActiveMQ(18):Message之延迟和定时消息投递
  8. 微信小程序基于scroll-view实现锚点定位
  9. Kotlin系列之枚举类
  10. 根据名称获取对应的拼音码首字母大写
  11. 一起学Python_Day05_常用模块及相关操作
  12. 【友盟+】国庆假期旅游类APP使用报告(中)
  13. geetest极验验证-java使用笔记
  14. [译] 使用 Espresso 隔离测试视图
  15. 剖析SQL Server 2005查询通知之基础篇
  16. 在树莓派上使用微信聊天
  17. 安全性和保密性设计---系统的安全性设计
  18. IntelliJ IDEA 2018.3 汉化包
  19. SVN关于previous operation has not finished问题的解决
  20. 快上车 全套Python零基础入门教程免费分享 !

热门文章

  1. JDBC连接数据库的步骤
  2. Oracle Statspack分析报告详解(一)
  3. C++输出斐波那契数列的几种方法
  4. #includeiostream与#includeiostream.h的区别
  5. 17.如何正确使用TCP
  6. linux审计日志清除,Linux登录安全及用户操作审计 ,linux下清理日志脚本
  7. python全局代理_玩Python之HTTP代理
  8. arduino动态刷新显示_2019 台北电脑展:华硕显示器产品精锐尽出
  9. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题
  10. TIOBE 7月编程语言排行:各大城市程序员的工资状况又又又涨了