[英]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.