簡體   English   中英

在Java中調用動態構造函數?

[英]Dynamic constructor calling in java?

假設我有4個類: ABSASB ,其中B extends ASB extends SA

A具有以下構造函數:

private SA a;
public A() {
   a = new SA();
}

顯然,當我為B類調用構造函數並且由於B extends A ,也將調用B extends AA構造函數。 但是在這種情況下,我希望A的構造函數執行a = new SB(); 而不是a = new SA();

是否有一種簡單的方法可以執行此操作而不更改AB的公共接口?

只是有一個public構造函數和一個protected構造函數:

private SA a;
public A() {
   this(new SA());
}
protected A(final SA a) {
   this.a = a;
}

然后在B

public B() {
   super(new SB());
}

是的。 例如 :

public A(YourEnum en) {
    if (en == YourEnum.SA){
        a = new SA();
    } else {
        a = new SB();
    }
}

另外,根據您的實際需求,可以通過重載構造函數來完成此操作

public A(){
    a = new SA();
}

public A(YourObjectYouNeed dataNeededForAnotherConstructor){
    //doing initialization stuff
    a = new SB();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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