instanceof & isInstance() & isAssignableFrom()
instanceof:判断一个对象,是否属于一个类。
isInstance:判断一个类,是否是一个实例的类或父类。
isAssignableFrom: 判断一个类,是否等同另一个类,或者另一个类的父类。
| 关键字or方法 |
返回为true的用法 |
| instanceof |
(类实例 or 子类实例) instanceof 自身类 |
| isInstance() |
自身类.class.isInstance(类实例 or 子类实例) |
| isAssignableFrom() |
自身类.class.isAssignableFrom(自身类.class or 子类.class) |
isInstance()和isAssignableFrom()都是java.lang.Class的本地方法。
1 2
| public native boolean isInstance(Object obj); public native boolean isAssignableFrom(Class<?> cls);
|
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class ParTest{} public class SubTest extends ParTest { public static void main(String[] args) { ParTest pt = new ParTest(); SubTest st = new SubTest(); System.out.println(pt instanceof SubTest); System.out.println(st instanceof ParTest); System.out.println(SubTest.class.isInstance(pt)); System.out.println(ParTest.class.isInstance(st)); System.out.println(SubTest.class.isAssignableFrom(ParTest.class)); System.out.println(ParTest.class.isAssignableFrom(SubTest.class)); } }
|