我有派生自类A的类A1和A2。我有一个对A类的引用,我想使用它的构造函数根据参数根据A1或A2实例化对象。
class A {
public A(bool someCondition) {
if (someCondition) {
//this = new A1() //this does not work
} else {
//this = new A2() //this does not work
}
}
}
有可能实现这一目标吗?
简单。只是不要在A
构造函数中执行此操作。为此,您需要一个静态生成器方法:
class A {
public static A build(bool someCondition) {
if (someCondition) {
return new A1();
} else {
return new A2();
}
}
}
但是,A
根本不可能在构造函数内部执行该操作。任何特定类的构造函数都是您要说的:给我该特定类的实例,而不是其他;-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句