java - 如何使用同名字符串引用类

标签 java string class reference arraylist

假设我有两个实现接口(interface) A 的类 Foo 和 Bar。我想要创建 Foo 或 Bar 的 ArrayList。在命令行参数中,用户必须输入 Foo 或 Bar 来确定他们尝试创建 ArrayList 的对象。

所以:

public static void main(String [] args){
    String type = args[0];
    ArrayList<type> list = new ArrayList<type>();
    }

如何从字符串类型转到对 Foo 或 Bar 类的引用,以便它执行

ArrayList<Foo> list = new ArrayList<Foo>();
or
ArrayList<Bar> list = new ArrayList<Bar>();

这样我可以执行以下操作:

for(int i = 0 ; i < list.size() ; i++){
    list(i).doSomething();
    //doSomething is a function in interface A that Foo and Bar are required to implement
}    

明确地说,我不想要类似的东西

if (type.equals("Foo")) list = ArrayList<Foo>();

我希望能够使用任何与类型同名的有效类创建 ArrayList。

最佳答案

编译器需要知道类型,听起来您想将类型视为运行时变量而不是编译时事实。

查看Get generic type of class at runtime 。它本质上会问同样的事情,您将获得有关使用反射的可能解决方案的良好信息。

关于java - 如何使用同名字符串引用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327514/

相关文章:

java - Eclipse 和虚拟机中的 Tomcat 服务器

c++ - 如何将 wchar_t 值打印到控制台?

java - 计算句子,只计算以标点符号+2个空格结尾的句子

Python 日志记录不会创建日志文件的多个实例

java - java线程无限循环

java - 删除数组字段(数组包含对象)

java - String.split() 不适用于 "[]"

linux - 通过制表符缩进部分的末尾输出匹配的字符串?

java - 最后的预期计算与测试仪不匹配。我的 setDimensions 方法有什么问题吗?

用于处理列表的 Java API