自己写的测试例子 分享一下
其中郁闷了 f.getType() instanceof Man 感觉这样就可以了但就是不正确,希望来人搞定的告诉我一声
import java.lang.reflect.Field; import java.lang.reflect.Type; /** * @author Administrator * 类的反射 */ public class Reflect { public static void main(String [] args) throws ClassNotFoundException{ new Child1().doMain(); } } interface Do{ public void doMain(); } class Man{ } class Father extends Man implements Do{ @Override public void doMain() { // TODO Auto-generated method stub } } class Child1{ private Father father; private String name; private Integer age; private Boolean sex; /** * @param clazz 派生子类 * @param Findclazz 要找的父类 * @return * @throws ClassNotFoundException * 递归该类是否是某个类 子类 */ public boolean allExtends(Class<?> clazz,Class Findclazz) throws ClassNotFoundException{ System.out.println(clazz.getName()); // System.out.println(Class.forName(clazz.getName()).getSuperclass()); if(clazz==Findclazz){//找到停止条件 return true; }else if(clazz==Object.class){ return false; } return allExtends(Class.forName(clazz.getName()).getSuperclass(), Findclazz); } public void doMain() throws ClassNotFoundException{ Field[] field= this.getClass().getDeclaredFields(); for(Field f:field){ //System.out.println(f.getType().getSuperclass()==Man.class); System.out.println(allExtends(f.getType(),Man.class)); //System.out.println(f.getType() instanceof Man); //感觉应该是这个样子 但是就是报错 郁闷 System.out.println(); } } } class Child2{ }