在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