簡體   English   中英

父類中的方法返回Java中的子類

[英]Method in parent class that returns child class in java

我有一個父類Product和一些子類,例如CameraTV等。現在,我想在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM