繁体   English   中英

Java Vector类对象

[英]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更快。

由于泛型主要是编译时只构建体,你不能实例一般类型参数(在这种情况下TVector<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM