instanceof和isAssignableFrom的区别
instanceof:的作用是判断子类形是否是父类形,一般用于判断子类是否继承某个类或者实现某个接口。
isAssignableFrom:的作用是判断父类是否有这个子类,一般判断父类是否被这个类继承或者接口实现。
使用方法:
public static void main(String[] args) {
ArrayList child = new ArrayList();
List<String> list = new ArrayList<String>();
Object object = new Object();
System.out.println("instanceof child instanceof parent测试 : "+ (child instanceof List));
System.out.println("instanceof parent instanceof child : "+(object instanceof List));
System.out.println("isAssignableFrom child.isAssignableFrom(parent)测试 : "+list.getClass().isAssignableFrom(object.getClass()));
System.out.println("isAssignableFrom parent.isAssignableFrom(child)测试 : "+object.getClass().isAssignableFrom(list.getClass()));
}
输出的结果
instanceof: child instanceof parent测试 : true
instanceof: parent instanceof child : false
isAssignableFrom: child.isAssignableFrom(parent)测试 : false
isAssignableFrom: parent.isAssignableFrom(child)测试 : true
可以很直观的看出两个的作用。