Class.isAssignableFrom()方法 与 instanceof 关键字的区别
1. Class.isAssignableFrom()
是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口。
格式为: Class1.isAssignableFrom(Class2)
调用者和参数都是java.lang.Class类型, 返回值:boolean类型
以:Object,String为例
a. "String是Object的父类"
String.class.isAssignableFrom(Object.class) 结果false;
b. "Object是String的父类"
Object.class.isAssignableFrom(String.class) 结果true;
c. "Object和Object相同"
Object.class.isAssignableFrom(Object.class) 结果true;
2. instanceof
用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是:o instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名。
以:Object,String为例
String str = new String();
String obj = new Object();
a. "Object是String的父类"
str instanceof Object 结果true;
b. "String和String相同"
1. Class.isAssignableFrom()
是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口。
格式为: Class1.isAssignableFrom(Class2)
调用者和参数都是java.lang.Class类型, 返回值:boolean类型
以:Object,String为例
a. "String是Object的父类"
String.class.isAssignableFrom(Object.class) 结果false;
b. "Object是String的父类"
Object.class.isAssignableFrom(String.class) 结果true;
c. "Object和Object相同"
Object.class.isAssignableFrom(Object.class) 结果true;
2. instanceof
用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是:o instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名。
以:Object,String为例
String str = new String();
String obj = new Object();
a. "Object是String的父类"
str instanceof Object 结果true;
b. "String和String相同"
str instanceof String 结果true;