2016-09-02 14 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

不,因为子类是在它的基类/超级类之后实例化的。 –