isAssignableFrom与instanceof的区别
1、isAssignableFrom针对的是class对象;
2、instanceof是实例。
isAssignableFrom是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。通常调用格式是Class1.isAssignableFrom(Class2) 调用者和参数都是java.lang.Class类型。
而instanceof是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。格式是:object instanceof TypeName;interImpl instanceof inter第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如String,InputStream。
1 package com.wondersgroup; 2 3 /** 4 * Created by Donge on 2017/1/9. 5 */ 6 import java.util.ArrayList; 7 import java.util.LinkedList; 8 import java.util.List; 9 10 public class Test { 11 public static void main(String[] args) { 12 List<Object> list1 = new ArrayList<Object>(); 13 List<Object> list2 = new LinkedList<Object>(); 14 List<Object> list3 = new ArrayList<Object>(); 15 16 System.out.println(list1.getClass().isAssignableFrom(list2.getClass())); 17 System.out.println(list1.getClass().isAssignableFrom(list3.getClass())); 18 19 System.out.println(list1 instanceof List); 20 System.out.println(list1 instanceof ArrayList); 21 System.out.println(list1 instanceof LinkedList); 22 } 23 24 }
运行结果为:
false
true
true
true
false