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

顺便说一下, achar在这里并不是真正的类型安全的;我会使用枚举。此外,我不喜欢使用突变,所以也许我会沿着这些路线寻求更多的东西:

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 回答