instanceof 针对实例
isAssignableFrom针对class对象
isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
通常调用格式是
- Class1.isAssignableFrom(Class2)
public boolean isAssignableFrom(Class<?> c) { if (this == c) { return true; // Can always assign to things of the same type. } else if (this == Object.class) { return !c.isPrimitive(); // Can assign any reference to java.lang.Object. } else if (isArray()) { return c.isArray() && componentType.isAssignableFrom(c.componentType); } else if (isInterface()) { // Search iftable which has a flattened and uniqued list of interfaces. Object[] iftable = c.ifTable; if (iftable != null) { for (int i = 0; i < iftable.length; i += 2) { Class<?> ifc = (Class<?>) iftable[i]; if (ifc == this) { return true; } } } return false; } else { if (!c.isInterface()) { for (c = c.superClass; c != null; c = c.superClass) { if (c == this) { return true; } } } return false; } }