Java如何从类类型设置Vector类型

时间:2012-10-26 21:00:09

标签: java vector

我在下面有这个代码(反序列化一个类):

....
Type type = field.getGenericType();
if (type instanceof ParameterizedType) {
    ParameterizedType ptype = (ParameterizedType) type;
if(c.getSimpleName().equals("Vector")){
    Class pta = (Class) ptype.getActualTypeArguments()[0];
    Vector<what to put here> v = (Vector)field.get(obj);
    if(v == null){
        v = new Vector<what to put here>();
        field.set(obj, v);
    }
....

我的问题是如何更改Vector以获取某种类型的数据,只需知道之前所用的类名(pta var)?

2 个答案:

答案 0 :(得分:5)

泛型在编译时解析,因此无法按照列出的方式执行此操作。只需使用Vector<Object>Vector

即可

答案 1 :(得分:2)

使用Vector代替Vector<what to put here>将有效。无论如何,在运行时使用generic erasure逻辑,你的向量将不再具有指定的类型。

关于与基元类型相关的注释,请注意您甚至无法将基元类型插入Vector。从javadoc:“Vector类实现了一个可增长的对象数组”。当您添加基元时,autoboxing用于将它们转换为对象计数器部分。