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>();
    }
}
4

1 に答える 1

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ここでは a は実際には型安全ではありません。私は列挙型を使用します。さらに、私は突然変異の使用が好きではないので、おそらくこれらの線に沿ってもっと何かをしたいと思います:

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>();
    }
}
于 2012-10-23T23:47:54.033 に答える