java - 有没有办法将对象引用保存在数组列表中?

标签 java

我正在编写一个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/

相关文章:

Paradox 数据库的 java 更新查询

r - (R) 自动计算优化的 Arima(p, d , q) 值

java - 二叉树问题的 isEmpty 方法

java - PrimeFaces 数据表初始 sortBy 不起作用

java servlet下载特定目录中的文件

java - 绘制 JPanel/JComponent

java - 添加时 Java Set Duplicate 失败的附加处理

java - Java 中的平铺图片库

java - 在 Object[] 数组中,如何检查给定对象是否是某个类的实例?

java - LocationManager 在 Android 中使用 getLastKnownLocation 返回空经度