【发布时间】:2017-01-10 12:35:26
【问题描述】:
我的抽象类有一个问题,不知道哪个子类调用了它的构造函数。
abstract class A {
Field field;
public A() {
this.field = Manager.add(Here i would like to add the type of subclass);
}
}
我可以在构造函数链中携带类类型作为参数,但我想知道是否有不同的方法。
也许我可以使用 StackTrace 来了解子类并获取它们的类型,但我认为不应该这样使用。
非常感谢您的回答:)
【问题讨论】:
-
通常抽象类不需要知道这一点。类型特定的逻辑应该发生在子类中。请注意,您可以在抽象类中定义一个抽象方法,从构造函数中调用它,但在子类中实现它。所以你可以以某种方式影响超类构造函数的行为。
-
@JFMeier,不鼓励从构造函数调用抽象方法,因为该方法可以访问未初始化的属性。
-
@Codebender 我知道这是有风险的(我自己也遇到过你提到的问题),但在某些情况下它可能有用。
标签: java polymorphism abstract-class