java - 如何让输入决定使用哪个类?

标签 java class conditional-statements

基本上我希望程序采用输入 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>();
    }
}

最佳答案

如果你希望这些变量有不同的类型,并且你仍然希望从它们中得到一些用途,那么它们必须有一些共同的操作。这些操作可以分解到 Bag 接口(interface)中:

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

关于java - 如何让输入决定使用哪个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040974/

相关文章:

python - 迭代迭代器对象中的 "1 or more"元素?

common-lisp - 用于控制转移的 Common Lisp 条件系统

java - 为接受父对象的子类编写 Java 构造函数

swift - 如何在 init "content"属性中计算和初始化? swift

c# - 无参数构造函数

swift - 类属性返回 nil

r - 对于满足 R 中特定条件的案例,如何用 0 替换缺失值?

java - 在黑莓中将日期转换为毫秒

java - 图形程序适用于 Windows,但不适用于 Mac

java - 我如何在 android 中找出一个 JSON 对象返回 JSON 数组或字符串