[英]Method in parent class that returns child class in java
我有一個父類Product
和一些子類,例如Camera
, TV
等。現在,我想在Product
中創建一個方法,根據獲取的對象,該方法從db通用屬性中獲取所有子項並返回一個子項的實例。從數據庫(我有很多孩子課)。 是否有可能做到這一點? 如果是,您能給我舉個例子嗎?
我的想法是從子類中的類似方法調用此方法,然后從db中獲取所有這些非公共屬性。
首先,似乎您想將數據庫訪問代碼放入您的類中,我不建議這樣做。
至於您的實際問題:請嘗試使用ORM框架,例如EclipseLink或Hibernate。 它們使用鑒別符列來確定實體的實際類,並為您創建並填充實例。 作為替代方案(如果您可以決定數據庫),還可以查看ObjectDB 。
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);
該方法將從數據庫中加載相關字段,識別產品類型,基於產品類型創建子類對象並調用其構造函數。
子類的構造函數調用超類的構造函數。 超類構造函數將加載所有公共屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.