1.区别
- instanceof判断的是实例对象,比如Dog extends Animal时,可以判断Dog对象是否是Animal类或接口的或其子类子接口的实例,格式如下:
oo instanceof TypeName
- isAssignableFrom判断的是一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
通常调用格式是 : Class1.isAssignableFrom(Class2);
2.简单实例验证下
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
System.out.println(list instanceof List);
System.out.println(list instanceof ArrayList);
System.out.println(list.getClass().isAssignableFrom(List.class));
System.out.println(List.class.isAssignableFrom(list.getClass()));
}
}