自己写的测试例子 分享一下
其中郁闷了 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{
}