java 中的类型判断
定义如下的类:
class AA {
}
interface BB {
}
class CC extends AA implements BB {
}
isinstance和instanceof
isinstance
isinstance
是Class
类中的方法,用来判断一个实例是否是Class
表示类或者其子类的实例:
CC c = new CC()
AA.class.isInstance(c); // true
BB.class.isInstance(c); // true
CC.class.isInstance(c); // true
CC.class.isInstance(null); // false
instanceof
instanceof
是Java
中的二元操作符,用来判断一个对象是不是某一类的实例:
c instanceof AA // true
c instanceof BB // true
c instanceof CC // true
null instanceof CC // false
isAssignableFrom
isAssignableFrom
是Class
对象的方法,用来判断Class
对象所代表类是否与传入的Class
对象代表的类相同,或者是父类或者接口:
AA.class.isAssignableFrom(CC.class); // true
BB.class.isAssignableFrom(CC.class); // true
CC.class.isAssignableFrom(CC.class); // NullPointerException