java instanceof 判断继承

来源:百度知道 编辑:UC知道 时间:2024/06/22 20:48:03
class A extends B{}
class C {
private A a;
}
getDeclaredField方法获得了a,怎么判断他继承了B

可以这样
A a = getDeclareField();
if(a instanceof B){
System.out.println("a 继承 B")
}
instanceof 就是判断是否为子类或者实现类

因为B是基类所以你可以写出来
B b = new A();
if(a instanceof B)进行判断,如果真那么肯定a就是B的子类的对象。
如果假那a就不是B的子类的对象

都在胡说。。。连反射技术都看不出来。。。
貌似可以
try{
B b=(B)a;
!(a instanceof B):a是B的子孙类实例。
}
catch(ClassCastException ex){
//...
}
这样吧?

import javax.swing.JApplet;

public class ClassTest {

// 一个判断son是否直接继承自father的简单函数
public static boolean genericCheck(Class<?> son, Class<?> father) {
return son.getGenericSuperclass() == father;
}

public static void main(String[] args) {
System.out.println(ClassTest.genericCheck(String.class, Object.class));
System.out.println(ClassTest.genericCheck(Sim.class, Object.class));
System.out.println(ClassTest.genericCheck(Sim.class, JApplet.class));
System.out.print