instanceof 与isAssignableFrom的区别

1.区别

  1. instanceof判断的是实例对象,比如Dog extends Animal时,可以判断Dog对象是否是Animal类或接口的或其子类子接口的实例,格式如下:oo instanceof TypeName
  2. isAssignableFrom判断的是一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
    通常调用格式是 : Class1.isAssignableFrom(Class2);

2.简单实例验证下

public class Test {  
    public static void main(String[] args) {  
        List list = new ArrayList();  
        System.out.println(list instanceof List);  
        System.out.println(list instanceof ArrayList);  

/*      System.out.println(list.getClass()); 
        System.out.println(List.class); 
        System.out.println(ArrayList.class);*/  

        System.out.println(list.getClass().isAssignableFrom(List.class));  
        System.out.println(List.class.isAssignableFrom(list.getClass()));  
    }  
}  

你可能感兴趣的:(java基础知识总结-经典)