类对象的Java向量
我想动态创建自定义类对象的向量。程序运行时,tableClassName变量包含从xml请求中重新获取的类名。当我尝试下面的方法时,它给了我一个错误类对象的Java向量,java,Java,我想动态创建自定义类对象的向量。程序运行时,tableClassName变量包含从xml请求中重新获取的类名。当我尝试下面的方法时,它给了我一个错误 Class tableClass = Class.forName(tableClassName).asSubclass(comm.Table.class); Vector<tableClass> MappingLookupResu = new Vector<tableClass>(); Class tableClass
Class tableClass = Class.forName(tableClassName).asSubclass(comm.Table.class);
Vector<tableClass> MappingLookupResu = new Vector<tableClass>();
Class tableClass=Class.forName(tableClassName).asSubclass(comm.Table.Class);
Vector MappingLookupResu=新向量();
由于泛型主要是一个仅编译时构造,因此不能基于运行时提供的字符串来实例化泛型类型参数(在本例中为向量的t
)
无论如何,这是没有意义的:不管是谁与你的向量进行交互
都不会获得使用具体类型处理向量所需的信息。如果他们这样做了,那么他们可以只向您提供类,因为泛型主要是一个仅编译时的构造,所以您不能基于运行时提供的字符串实例化泛型类型参数(在本例中是t
的向量)
无论如何,这是没有意义的:不管是谁与你的向量进行交互
都不会获得使用具体类型处理向量所需的信息。如果他们这样做了,那么他们就可以为您提供Class,就像编写mappingLookupResult=newvector()代码>
mappingLookupResult=newvector()
是合法的,但您提供的是一个对象(属于“类”类),而不是类定义。如果对象是“comm.Table”,请尝试:
mappingLookupResult = new Vector< comm.Table >();
mappingLookupResult=newvector();
或
mappingLookupResult=新向量<?扩展通讯表>();
另外-您是否出于特定原因使用Vector
<如果不需要同步,code>ArrayList会更快。这就像编写mappingLookupResult=newVector()代码>
mappingLookupResult=newvector()
是合法的,但您提供的是一个对象(属于“类”类),而不是类定义。如果对象是“comm.Table”,请尝试:
mappingLookupResult = new Vector< comm.Table >();
mappingLookupResult=newvector();
或
mappingLookupResult=新向量<?扩展通讯表>();
另外-您是否出于特定原因使用Vector
<如果不需要同步,code>ArrayList
会更快。Java规则47:不要使用Vector
(这是一个坏类)Java规则47:不要使用Vector
(这是一个坏类)非常感谢您提供的信息。如果向量名结果与函数中的java.lang.Object实例项一起添加。是否有一种方法可以遍历每个向量对象结果和类型强制转换到tableClassName引用。如何将类型转换为tableClass aa=result.get(0);我想在对象aa中调用一些getMethods,你可以粘贴一些示例代码。问题是我从xml请求中动态获取类名。如果您事先不知道类型,则无法(在编译时)进行类型转换。如果可以保证的话,您可能可以将类型转换到一个公共接口,否则您可以尝试使用反射访问这些方法。非常感谢您提供的信息。如果向量名结果与函数中的java.lang.Object实例项一起添加。是否有一种方法可以遍历每个向量对象结果和类型强制转换到tableClassName引用。如何将类型转换为tableClass aa=result.get(0);我想在对象aa中调用一些getMethods,你可以粘贴一些示例代码。问题是我从xml请求中动态获取类名。如果您事先不知道类型,则无法(在编译时)进行类型转换。如果可以保证的话,您可能能够将类型转换到公共接口,否则您可以尝试使用反射访问方法。
mappingLookupResult = new Vector< ? extends comm.Table >();