A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一个可以升华所学知识,拓展思维的需求,挑战一下,看看你能实现这个需求吗?
封装一个方法,传递任意两个对象进去,判断这两个对象对应的类是否有继承关系,并判断出哪个是父类对象,哪个是子类对象?

6 个回复

倒序浏览
Class类的isAssignableFrom方法就可以实现这个需求
回复 使用道具 举报
fantacyleo 发表于 2015-2-26 01:05
Class类的isAssignableFrom方法就可以实现这个需求

{:2_30:}我都不知道有这个方法,见笑了。。。也可以尝试自己模拟下Class的这个方法
回复 使用道具 举报
张利强 发表于 2015-2-26 01:19
我都不知道有这个方法,见笑了。。。也可以尝试自己模拟下Class的这个方法 ...

还有一个isInstance方法也是类似的。自己实现的话,我还真没啥简洁的思路,JDK源码中isInstance和isAssignableFrom都是native方法,看不到源码。不知道你可否分享一下思路?
回复 使用道具 举报
本帖最后由 sofeel 于 2015-2-26 11:02 编辑

用反射可以。
1,先排除8大基本类型、数组、接口(在Class中都有),剩下的都是类;
2,找出各自的方法比较下:
分别遍历各自的方法,判断方法有没有共性,判断有没有包含与被包涵的关系。


回复 使用道具 举报
sofeel 发表于 2015-2-26 01:47
用反射可以。
1,先排除8大基本类型、数组、接口(在Class中都有),剩下的都是类;
2,找出各自的方法比较 ...

思路不错,但是这个不能说明两个对象之间是否有继承关系。比如定义一个Person类和Animal类,都有相同的name,age属性,setter(),getter()方法,他们的方法列表都是一样的,但是他们之间并没有继承关系

点评

呵呵,考虑不周见笑了。  发表于 2015-3-13 23:05
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马