返回信息流class Foo {}
class Bar extends Foo {}
public class Main {
public static void main(String[] args) {
Class c1 = Foo.class;
Class c2 = Bar.class;
if(isSubclassOf(c1,c2)) { ...}
}
private static boolean isSubclassOf(Class c1, Class c2) {
... // 怎么知道c2是不是c1的子类?(运行时判断)
}
}
我确实google过。也看过JavaDoc。
有人建议用c1.isInstance(c2.newInstance()); 但是我不想创建新对象。如何是好?
这是一条镜像帖。来源:北邮人论坛 / java / #12546同步于 2009/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
两个Class类的对象,如何判断一个是不是另一个的子类?
wks
2009/12/3镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
public static boolean isSubclassOf(Class c1, Class c2) {
try {
c2.asSubclass(c1);
try {
c1.asSubclass(c2);
return false;
} catch (ClassCastException cce) {
return true;
}
} catch (ClassCastException cce) {
return false;
}
}
只能获得直接父类。
在我的应用里确实也够用了。但是感觉不够通用。
下面这个呢?
Class c1,c2;
while(c2!=null) {
if(c2.equals(c1)) return true;
c2=c2.getSuperclass();
}
return false;
【 在 lovemaker 的大作中提到: 】
: 反射里不是有获得父类的api函数吗
【 在 wks 的大作中提到: 】
: class Foo {}
: class Bar extends Foo {}
: public class Main {
: ...................
如果你只是单纯的想知道这个结果的话,可以去看一下反射机制,自己简单处理一下肯定就可以了
否则的话,直接想一想为什么有这种需求就行了, 用基类作为参数,在实际调用时用instanceof 判断 是否为父类
结合class.isAssignableFrom 就可以实现了
【 在 wks 的大作中提到: 】
: 只能获得直接父类。
: 在我的应用里确实也够用了。但是感觉不够通用。
: 下面这个呢?
: ...................
【 在 wks 的大作中提到: 】
: class Foo {}
: class Bar extends Foo {}
: public class Main {
: ...................
不懂 帮顶 学习一下