在Java中,我该如何去决定一个类的扩展类?如何确定一个类是否扩展了Java中的另一个类?
public class A{
}
public class B extends A{
}
public class C extends A{
}
public class D{
}
public class E extends B{
}
public class doSomething{
public void myFunc(Class cls){
//need to check that cls is a class which extends A
//i.e. B, C and E but not A or D
}
}
would cls.getSuperClass()
请问我需要什么?
这是迄今为止最好的解决方案,但我会补充说,尝试这样做有点“代码味道”。正如马丁布罗德赫斯特所说,你可能想要找到一个更好的方法去做。 – 2010-11-04 20:08:35
@Justin:我也意识到这一点。不幸的是,参数是'Class',并且需求指出'A.class'本身不应该通过检查。最好的做法是使'A'抽象并应用策略模式,但这需要'A'的具体*实例作为参数,而不是'Class '。我不确定这将如何影响OP设计的剩余部分。也许OP有自己的理由选择'Class'作为参数。在我们提供更好的设计建议之前,功能需求必须更加明确。 – BalusC 2010-11-04 20:17:53
这是用于实际的商业系统还是学校项目? – 2010-11-05 20:36:37