这一章节主要讲述一下三个检测对象类型的方法instanceof、isInstance和isAssignableFrom。
例子:
package com.ray.ch12;public class Test {public static void main(String[] args) {try {Class<? extends Father> AClass1 = (Class<? extends Father>) Class.forName("com.ray.ch12.Sub");System.out.println(AClass1.newInstance() instanceof Sub);System.out.println(AClass1.newInstance() instanceof Father);System.out.println(AClass1.isInstance(new Sub()));System.out.println(AClass1.isInstance(new Father()));System.out.println(AClass1.isAssignableFrom(Sub.class));System.out.println(AClass1.isAssignableFrom(Father.class));} catch (ClassNotFoundException e) {e.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}class Father {
}class Sub extends Father {
}
输出:
true
true
true
false
true
false
1.看上面的代码的时候需要注意:
(1)instanceof参数是类
(2)isInstance后面的参数是类的对象
(3)isAssignableFrom后面的参数是类的Class对象
这三种都是检测对象类型的方法。
2.从输出结果上面看出注意的地方:
(1)instanceof是支持向上转型,因此上面的AClass1也是Father的Class类型
(2)isInstance和isAssignableFrom不支持向上转型,因此输出的时候AClass1只能是指向Sub,而认不出Father。
总结:这一章节主要展示一下三个检测对象类型的方法instanceof、isInstance和isAssignableFrom,以及相应的注意点。
这一章节就到这里,谢谢。
-----------------------------------
目录