繁体   English   中英

用未知类调用静态工厂方法

[英]Calling static factory method with unknown class

嗨,我有一个抽象类,其中包含许多子类。 我想将此抽象类的构造函数设为私有,并创建工厂方法。 在每个子类中,该方法应如何以相同的方式工作? 如果我做:

return new AbstractClass();

我收到错误消息:类是抽象的,不能是实例...我应该使用反射吗?

您可以使用super关键字从子类访问抽象类的构造函数。

public SubClass() {
    super(); // this will call AbstractClass()
    // something else that you want to do for this subclass
}

正如注释中已经指出的那样,您不能将new关键字与抽象类一起使用。 使用new时,您需要知道真实类型。

您可以在抽象基类中实现factory方法,并使其基于传递给create方法的参数和/或某些内部逻辑来决定要返回哪个非抽象子类。

或者,您可以使factory方法本身抽象并在每个非抽象子类中实现它,以返回该类型的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM