2016-09-02 64 views
1

我有一個問題,我的抽象類不知道,哪個子類調用它的構造函數。引用抽象類的子類

abstract class A { 

    Field field; 

    public A() { 
     this.field = Manager.add(Here i would like to add the type of subclass); 
    } 
} 

我可以攜帶類型作爲構造函數鏈中的參數,但我想知道是否有不同的方式。
也許我可以使用StackTrace來了解子類並獲取它們的類型,但我認爲它不應該以這種方式使用。

預先感謝您對我付出的答案:)

+4

通常,抽象類不需要知道這一點。類型特定的邏輯應該發生在子類中。請注意,您可以在抽象類中定義抽象方法,從構造函數中調用它,但在子類中實現它。所以你可以以某種方式影響超類構造函數的行爲。 –

+0

http://stackoverflow.com/questions/3417879/getting-the-name-of-a-sub-class-from-within-a-super-class –

+2

@JFMeier,不鼓勵從構造函數調用抽象方法,該方法可以訪問未初始化的屬性。 – Codebender

回答

4

this.getClass()西港島線給你的類實例化。

+0

謝謝,它工作:) –

+0

是否有可能在調用超類的構造函數之前調用'this.getClass()'? –

+0

不,因爲子類是在它的基類/超級類之後實例化的。 –