对象在java中构造一类对象
有一个超类,a,还有很多子类,B,C,D。。。人们可以编写更多的子类。每个类都有dostuff()方法,每个方法在某些方面都不同
我想要一个对象,它可以构造属于一个或其任何子类的任何对象
例如,我可以传递子类的名称或该类的一个对象,它将构造该类的另一个对象
我当然会写
A construct(A var){
stuff = var.dostuff();
domorestuff(stuff)
return new A(stuff);
}
B construct(B var){
stuff = var.dostuff();
domorestuff(stuff)
return new B(stuff);
}
C construct(C var){
stuff = var.dostuff();
domorestuff(stuff)
return new C(stuff);
}
但这是没有效率的。每次我创建一个新的子类时,我都要写几行新词
看来我也不能用泛型。因为我不能对不在A的任何子类中的对象使用dostuff()
在这种情况下我该怎么办
# 1 楼答案
你可以使用反射
您可能需要强制转换并捕获异常,但这是基本思想
# 2 楼答案
你应该实现工厂模式。您的实现将使用
Class.forName(className)