`
zjh1n795
  • 浏览: 9415 次
文章分类
社区版块
存档分类
最新评论

判断类中的某个属性 是否是某个类的派生子类

 
阅读更多

自己写的测试例子 分享一下

其中郁闷了 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{
	
}



分享到:
评论

相关推荐

    Java 课程设计

    1. 输出50—100间的所有素数,其中判断一个数是否为素数用函数完成。 2. 设计一个学生成绩管理系统,能输入学生的学号、姓名和成绩等数据,能按成绩从高到低进行排序,并能将排序的结果输出。 提示: 设计一个学生类...

    Java程序设计习题(含答案解析).doc

    最终类不能派生子类,最终方法不能被覆盖。(T ) 8.子类要调用父类的方法,必须使用super关键字。( T ) 9.一个Java类可以有多个父类。( F ) 10.如果p是父类Parent的对象,而c是子类Child的对象,则语句c = p是正确...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168 2.11 日期和时间 169 实例141 设置...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168 2.11 日期和时间 169 实例141 设置...

    数据库应用设计.doc

    分裂的方法有水平分裂和垂直分裂两种, 其中水平分裂是依据实体的(某个属性取值)将一个实体分解为若干个实体。 7、利用ER方法进行数据库概念设计时,一般分三步进行:首先设计局部ER模式,然后将 各局部ER模式综合...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    PT80-NEAT开发指南v1.1

    窗口类 CNeatView 视图类 ................................................................................................................... 26 CNeatControl 类 ............................................

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该纪录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql...

    LINGO软件的学习

    #eq#是逻辑运算符,用来判断是否“相等”,可参考§4. &1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2 个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,……,...

    入门学习Linux常用必会60个命令实例详解doc/txt

    要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之后,...

    语言程序设计课后习题答案

    语句if(x == 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。 2-15 什么叫做作用域?什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    3.输入完按下Enter 键确认即可,然后在子菜单中加入“新建(&N)”,确定后, 效果如下图。 4.我们在下面的动作编辑窗口可以看到新加的“新建”菜单。 5.双击这一条,可打开它的编辑对话框。我们看到Icon 项,这里可以...

    oracle数据库经典题目

    数据库模式与用户之间的区别在于:用户是数据库的使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象的集合,是数据库中对象的组织和管理单位。 2. 简要游标的作用和...

    PDM产品配置管理的研究

    * 运用这些定义的产品结构和规则,产品选项管理能够判断产品的某个配置是否有效; * 为生产有效的产品配置创建精确BOM。 (2)产品配置管理: * 客户创建客户配置——选择符合他们需求的特征、选项和数量。通过应用...

    javascript入门笔记

    使用场合:任意数字与1做按位与操作,可以判断奇偶性,结果为1,则为奇数,否则为偶数 0 :0 1 :1 2 :10 3 :11 4 :100 5 :101 5 & 1 101 001 ========== 001 4 & 1 100 001 ==== 000 2、按...

    经典SQL语句大全

    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...

Global site tag (gtag.js) - Google Analytics