我有一个父类Product
和一些子类,如Camera
,TV
等...
现在我想在Product
中创建一个方法,根据从db中获取的对象(我有很多子类),从db公共属性获取所有子节点并返回子节点的实例。
是否有可能做到这一点?如果是的话,你能告诉我一个小例子吗?
我的想法是从子类中的类似方法调用此方法,然后从db中获取所有这些非常见属性。
答案 0 :(得分:1)
首先,您似乎想将db访问代码放入您的类中,我不建议这样做。
至于你的真正问题:尝试使用ORB框架,如EclipseLink或Hibernate。这些使用鉴别器列来确定实体的实际类,并为您创建和填充实例。作为替代方案(如果您可以决定数据库),您还可以查看ObjectDB。
答案 1 :(得分:0)
答案 2 :(得分:0)
public class Product{
int productId;
protected Product(int productId){ //avoid creating pure product objects
this.productId = productId;
//load all the common properties
}
public Product getProduct(int productId){
// read the product with productId from the table
// identify the type of the product
String type = .... (assume its "camera")
if("camera".equals(type)){
return new Camera(productId);
}
}
}
在子类中,
public class Camera extends Product{
public Camera(int productId){
super(productId);
}
}
用法
Product p = Product.getProduct(4025);
该方法将从数据库加载相关字段,识别产品类型,根据产品类型创建子类对象并调用其构造函数。
子类的构造函数调用超类构造函数。 超类构造函数加载所有公共属性。