原文地址:
http://baowand6203.blog.163.com/blog/static/171031964200921841853604/
isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
通常调用格式是
Class1.isAssignableFrom(Class2)
调用者和参数都是 java.lang.Class 类型。
这个方法在如下情况下返回true
1.class1跟class2是同一类型 则返回true
2.class1是class2的超类或超接口 则返回true
如:Object.class.isAssignableFrom(String.class) Object是String的超类 所以返回true
String.class.isAssignableFrom(String.class) 返回true
而 instanceof 是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是: oo instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名
具体例子如下:
package test;
public class Test2 {
public void testIsAssignedFrom1()
{
System.out.println( String.class.isAssignableFrom(Object.class) ) ;
}
public void testIsAssignedFrom2()
{
System.out.println( Object.class.isAssignableFrom(Object.class) );
}
public void testIsAssignedFrom3()
{
System.out.println( Object.class.isAssignableFrom(String.class) );
}
public void testInstanceOf1()
{
String ss = "";
System.out.println( ss instanceof Object );
}
public void testInstanceOf2()
{
Object o = new Object();
System.out.println( o instanceof Object );
}
public static void main(String[] args){
Test2 test = new Test2();
test.testIsAssignedFrom1();
test.testIsAssignedFrom2();
test.testIsAssignedFrom3();
test.testInstanceOf1();
test.testInstanceOf2();
}
}
打印结果为:
false
true
true
true
true