簡體   English   中英

Java:如何將String轉換為子類數據類型?

[英]Java: How to convert a String into an subclass data type?

我想將String轉換為子類數據類型,怎么做呢? 還是有可能的?

我有一個抽象類Acct

公共抽象類SinAcct擴展了Acct

公共類SavAcct擴展了SinAcct

在SavAcct中,有一個構造函數

public SavAcct(String acctNo, String name, ConsolidateAccount ownerAcct, double lastMonthBal){
        super(acctNo,name,ownerAcct,lastMonthBal);

    }

抽象類ConsolidateAccount擴展了Account

我想要新的SavAcct,

new SavAcct(array[1],array[2],array[3],Double.parseDouble(array[4])

但它是錯誤構造函數SavAcct(String,String,String,double)是未定義的

有人可以幫幫我嗎? PLS

如果你真的想將String轉換為其他類的對象。 您可以有三種可能的解決方案: -

  1. 創建一個構造函數,該構造函數將String作為參數並執行適當的轉換以創建Object。

  2. 有一個工廠方法,即getInstance(),它接受String參數並返回一個Object。

  3. 您可以使用一種方法,該方法可用於與上述相同的目的。

編輯

只是忘了提到String是一個在您的應用程序中無法修改或繼承的最終類。

public Static SubClass getInstance(String str){
   SubClass obj = new SubClass(); 
   // ***the choice of constructor depends upon how u have created ur class
   //use str to form the SubClass object in following lines 
   return obj;
}

比你可以用它

SubClass newObj = SubClass.getInstance("String value here");

你應該有一個具體的類(非抽象類),擴展ConsolidateAccount可以了

public class ConcreteAccount extends ConsolidateAccount

然后你可以使用這樣的東西。

ConsolidateAccount ownerAcct = new ConcreteAccount(array[3]);
new SavAcct(array[1],array[2],ownerAcct,Double.parseDouble(array[4]);

並在ConcreteAccount類中創建一個構造函數public ConcreteAccount(String str)

只是為了確保你沒有走錯路,而不是添加一個基本上需要調用super(acctNo,name,ownerAcct,lastMonthBal);的新構造函數super(acctNo,name,ownerAcct,lastMonthBal); 像這個現有的構造函數,為什么不嘗試使用你的array[3]鍵創建或查找ConsolidateAccount實例?

例如

ConsolidateAccount consolidateAccount = new ConcreteConsolidateAccount(array[3]);
new SavAcct(array[1],array[2],consolidateAccount,Double.parseDouble(array[4]);

ConcreteConsolidateAccount是擴展ConsolidateAccount的具體類。

看起來更合情合理。

當然我不知道圍繞ConsolidateAccount邏輯,或者即使它有一個帶String的構造函數,但這只是為了給你一個想法,因為看起來你需要調用SavAcct類的構造函數正在擴展(這由超級呼叫表示)。

你不能這樣做,因為String類是final。 你能組成代替繼承嗎? http://www.artima.com/designtechniques/compoinh.html

不可能,String是最終的。

java.lang.String類是final ,所以你無法擴展它。 你最多可以包裝它。

請參閱我可以在Java中向String類添加新方法嗎?

你有一個字符串數組,你調用的構造函數需要ConsolidateAccount在第三個位置。 您需要基於該第三個String實例化ConsolidateAccount的子類型。 沒有詳細信息可以幫助您如何做到這一點。 此外,您從1開始索引數組。數組從零開始。

暫無
暫無

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

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