我有一个问题,我的抽象类不知道,哪个子类调用它的构造函数。引用抽象类的子类
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