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