[英]Java Vector of Class objects
我想动态创建自定义类对象的向量。 程序运行时,tableClassName变量包含从xml请求中检索的类名。 当我尝试以下方式时,这给我一个错误。
Class tableClass = Class.forName(tableClassName).asSubclass(comm.Table.class);
Vector<tableClass> MappingLookupResu = new Vector<tableClass>();
这就像编写mappingLookupResult = new Vector< String.class >();
mappingLookupResult = new Vector< String >();
是合法的,但是您提供的是“ Class”类的对象,而不是类定义。 如果您的对象是“ comm.Table”,请尝试:
mappingLookupResult = new Vector< comm.Table >();
要么
mappingLookupResult = new Vector< ? extends comm.Table >();
另外-您是否出于特定原因使用Vector
? 如果不需要同步,则ArrayList
更快。
由于泛型主要是编译时只构建体,你不能实例一般类型参数(在这种情况下T
的Vector<T>
的基础上一个String
在运行时提供的。
无论如何,这是没有意义的:无论与您的Vector
进行交互的人都不会获得使用具体类型处理Vector
所需的信息。 如果他们这样做了,那么他们可以为您提供Class<? extends Table>
直接Class<? extends Table>
而不提供类名。
但是,您可以确保向量类型参数的上限为Table
。 您需要执行的操作取决于您实际上如何与Vector
交互。 例如,如果要将类型的新实例放入其中,则需要输入tableClass
:
Class<? extends Table> tableClass =
Class.forName(tableClassName).asSubclass(Table.class);
Vector<Table> result = new Vector<Table>();
result.add(tableClass.newInstance());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.