类型信息之instanceof、isInstance与isAssignableFrom
来源:互联网 发布:erp是什么软件 编辑:程序博客网 时间:2024/06/05 16:25
Java中RTTI部分判断对象是不是某个特定类型的实例的方式包括instanceof、isInstance与isAssignableFrom。
查看JDK API文档可知:
instanceof是一个二元操作符:
boolean result = object instanceof class
判定object 是不是class或其子类的实例对象。
isInstance(Object obj) 是动态的instanceof:
判定指定的 Object 是否与此 Class 所表示的对象赋值兼容,返回一个boolean值。
isAssignableFrom(Class<?> cls)
判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
class A{}class AA extends A{}public class Test{ static void print(Boolean b){ System.out.println(b); }public static void main(String[] args){ A a= new A(); AA aa=new AA(); print(a instanceof A); print(a instanceof AA); print(aa instanceof A); print(aa instanceof AA); System.out.println(); print(A.class.isInstance(a)); print(A.class.isInstance(aa)); print(AA.class.isInstance(a)); print(AA.class.isInstance(aa)); System.out.println(); print(A.class.isAssignableFrom(A.class)); print(A.class.isAssignableFrom(AA.class)); print(AA.class.isAssignableFrom(A.class)); print(A.class.isAssignableFrom(AA.class)); }}
输出:
instanceof:
true
false
true
true
isInstance:
true
true
false
true
isAssignableFrom:
true
true
false
true
总结
object instanceof class:判定object 对象是否属于class类或其子类,这里class是类名;
Class.isInstance(Object obj):与instanceof等价,判定object 对象是否属于Class类或其子类,这里Class不是类名,是Class对象的引用(如:A.class);
Class.isAssignableFrom(Class<?> cls):判定Class cls(参数)是否是Class类(左)或其子类,这里均为Class对象的引用。
- 类型信息之instanceof、isInstance与isAssignableFrom
- instanceof与isInstance,isAssignableFrom
- instanceof, isInstance, isAssignableFrom
- isAssignableFrom instanceof isInstance比较
- instanceof, isinstance, isAssignableFrom 区别
- instanceof, isInstance, isAssignableFrom
- instanceof,isInstance,isAssignableFrom
- isAssignableFrom instanceof isInstance比较
- Java-----instanceof、isInstance、isAssignableFrom
- Java isAssignableFrom、instanceof 、isInstance
- 【集腋成裘】类型判断(instanceof、isInstance、isAssignableFrom、equals)
- instanceof, isinstance,isAssignableFrom的区别
- instanceof和isAssignableFrom及isInstance
- instanceof, isinstance,isAssignableFrom的区别
- instanceof, isinstance,isAssignableFrom的区别
- instanceof, isinstance,isAssignableFrom的区别
- instanceof, isinstance,isAssignableFrom的区别
- instanceof, isinstance,isAssignableFrom的区别
- Ubuntu系统安装---系统u盘制作
- Problem J: Caesar密码
- 屏幕护眼的绿色
- OKVIS Reprojection Error
- javaEE基础servlet之ServletConfig
- 类型信息之instanceof、isInstance与isAssignableFrom
- 初学构建小项目之仓库管理系统货物类型管理功能实现(三)
- 在switch语句中使用字符串以及实现原理
- 数据存储——文件存储
- 61.[PHP]PHP 程序的运行方式
- 第六十三篇:S32V234汽车电子应用功能挖掘的相关文章:双目立体、雷达视觉融合、ADAS集成
- Picasso加载圆角图片
- Matlab与线性代数 -- 矩阵的水平连接和垂直连接
- Hadoop伪分布环境部署之Hadoop