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