我有一個問題,我的抽象類不知道,哪個子類調用它的構造函數。引用抽象類的子類
abstract class A {
Field field;
public A() {
this.field = Manager.add(Here i would like to add the type of subclass);
}
}
我可以攜帶類型作爲構造函數鏈中的參數,但我想知道是否有不同的方式。
也許我可以使用StackTrace來了解子類並獲取它們的類型,但我認爲它不應該以這種方式使用。
預先感謝您對我付出的答案:)
通常,抽象類不需要知道這一點。類型特定的邏輯應該發生在子類中。請注意,您可以在抽象類中定義抽象方法,從構造函數中調用它,但在子類中實現它。所以你可以以某種方式影響超類構造函數的行爲。 –
http://stackoverflow.com/questions/3417879/getting-the-name-of-a-sub-class-from-within-a-super-class –
@JFMeier,不鼓勵從構造函數調用抽象方法,該方法可以訪問未初始化的屬性。 – Codebender