2012-10-23 24 views
1

基本上我想讓程序輸入A或L來實例化不同的類。我有構建適合這些變量的地方,我只需要知道如何實際創建一個條件或開關,將初始化給定的輸入類。代碼如下:如何讓輸入指定要使用哪個類?

public constructor(char choice){ 
    if(choice == 'A'){ 
     classa<String> baga = new classa<String>(); 
     classa<String> bagb= new classa<String>(); 
    } 
    else if(choice== 'L'){ 
     classb<String> baga = new classb<String>(); 
     classb<String> bagb = new classb<String>(); 
    } 
} 
+0

所以,你所說的是你想要使用'元音'和'contants '作爲另一個對象的構造參數?你正在使用的兩個類(數組包和列表包)與某個共同的祖先有什麼關係? –

+0

無論你如何描述,你已經在做。問題是什麼? –

回答

2

如果你想這些變量有不同的類型,你仍然希望得到一些使用了它們,那麼它們必須有一些常用的操作。這些操作可以被分解成Bag接口:

public ConsonantCounter(char bagImplementationClass){ 
    Bag vowels; 
    Bag consonants; 
    if (bagImplementationClass == 'A'){ 
     vowels = new ResizableArrayBag<String>(); 
     consonants = new ResizableArrayBag<String>(); 
    } else if (bagImplementationClass == 'L'){ 
     vowels = new LinkedListBag<String>(); 
     consonants = new LinkedListBag<String>(); 
    } 
    // ... 
} 

順便說一句,一個char是不是真的類型安全的位置;我會使用枚舉。此外,我不喜歡使用突變,所以也許我會沿着這些方向尋找更多的東西:

final Bag vowels = makeLetterBag(type); 
final Bag consonants = makeLetterBag(type); 

private static IBag makeLetterBag(BagType type) { 
    switch (type) { 
    case RESIZABLE: 
     return new ResizableArrayBag<String>(); 
    case LINKED_LIST: 
     return new LinkedListBag<String>(); 
    } 
} 
+0

謝謝,先生。 – steverngallo