我正在编写一个java程序,它允许您通过控制台“混合”饮料。我有继承饮料类的类,例如,如果用户键入字符串“beer”,我想创建一个新的“beer”类。 如果用户输入字符串“wine”,则会创建一个新的“wine”类。 如何将“beer”字符串翻译为 beer 类。
我尝试创建一个 ArrayList,然后将我拥有的每一类饮料添加到其中,方法是:
al.add(new Beer());
问题是我只想在用户实际输入“beer”时创建一个新的啤酒实例。
最佳答案
这里的答案是使用对 Class#newInstance
方法的简单调用。将所有类保留在一个结构中,并对其进行迭代以查找匹配项。
示例:
public class Classes {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
List<Class<?>> classes = new ArrayList<>();
classes.add(Beer.class);
classes.add(Wine.class);
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
for (Class<?> clazz : classes) {
if (clazz.getSimpleName().equals(input)) {
Object obj = clazz.newInstance();
}
}
}
private static class Beer {
public Beer() {
System.out.println("A beer has been created.");
}
}
private static class Wine {
public Wine() {
System.out.println("A wine has been created.");
}
}
}
输入/输出示例:
Wine
A wine has been created.
<小时/>
如果您有不同的构造函数并且每次都想选择不同的构造函数,请检查此 answer.
关于java - 有没有办法将对象引用保存在数组列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921180/