instanceof:如果左边对象是右边类型所表示类(或任意一子类)的一个实例,则返回true,否则false。判断左边真实类型是不是右边的类或它的派生类。

        //实例一
Object o= new Long(112);
if(o instanceof Long){
System.out.println(true);//ok
}else{
System.out.println(false);
}
//实例二
if(new Object() instanceof Long){
System.out.println(true);
}else{
System.out.println(false);//ok
}

关于instanceof的底层实现推荐阅读:

java中关于instanceof 的问题? - 回答作者: RednaxelaFX

Java instanceof 关键字是如何实现的? - 回答作者: RednaxelaFX

instanceof的使用限制比较严格(只可将某对象与命名类型进行比较,而不能与Class对象作比较),作为替代品Class的isInstance()方法相对更灵活。

public boolean isInstance(Object obj):

判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法。如果指定的 Object 参数非空,且能够在不引发 ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false

特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object 参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object 参数能转换为一个数组类的对象,则返回 true;否则返回 false。如果此 Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个基本类型,则此方法返回 false

参数:

obj - 要检查的对象

返回:

如果 obj 是此类的实例,则返回 true

另外Class还有一个很有用的函数isAssignableFrom。

public boolean isAssignableFrom(Class<?> cls): 此方法能测试指定 Class 参数所表示的类型能否转换为此 Class 对象所表示的类型。

判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true;否则返回 false。如果该 Class 表示一个基本类型,且指定的 Class 参数正是该 Class 对象,则该方法返回 true;否则返回 false

特别地,通过身份转换或扩展引用转换,此方法能测试指定 Class 参数所表示的类型能否转换为此 Class 对象所表示的类型。有关详细信息,请参阅 Java Language Specification 的第 5.1.1 和 5.1.4 节。

参数:

cls - 要检查的 Class 对象

返回:

表明 cls 类型的对象能否赋予此类对象的 boolean

抛出:

NullPointerException - 如果指定的 Class 参数为 null。

最新文章

  1. 理解CDN
  2. [转]DOS特殊字符转义方法
  3. angular的工具方法笔记(equals, HashKey)
  4. 三道题(关于虚表指针位置/合成64位ID/利用栈实现四则运算)
  5. 九、 合成(Composite)模式 --结构模式(Structural Pattern)
  6. Layoutinlater 转
  7. 冒泡算法给0~9随机n位数字排序
  8. Linux/Unix 资源
  9. scrapy 数据存储mysql
  10. 关于snappy的压缩 hadoop和hbase均支持
  11. Monkey测试简介
  12. 小程序实践(二):swiper组件实现轮播图效果
  13. 62.纯 CSS 创作一只蒸锅(感觉不好看呀)
  14. android allowbackup
  15. linux上jdk管理
  16. [OpenCV] Samples 02: Mat - 图像矩阵
  17. 设计模式之&mdash;&mdash;Composite模式
  18. 阿里云提示Discuz memcache+ssrf GETSHELL漏洞如何解决
  19. UITextView 的 return响应事件
  20. Jenkins的pipeline

热门文章

  1. springcloud系列七 整合slueth,zipkin 分布式链路调用系统:
  2. C++的一种业务分发方案(另类的工厂模式)
  3. Dell N5010 Win7下 玩CS全屏(1366*768)问题
  4. visual studio检查运算上溢/下溢的开关位置
  5. Java高级工程师应该掌握的东东
  6. java实现压缩文件下载
  7. py---------面向对象进阶
  8. math.random()方法的使用
  9. MongoDB系列—— Window 搭建Mongodb 集群
  10. Java Jdk 环境配置和测试