2

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

....
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)?

4

2 回答 2

5

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

于 2012-10-26T21:03:14.960 回答
2

使用Vector代替Vector<what to put here>将起作用。无论如何,在运行时使用通用擦除逻辑,并且您的向量将不再具有指定的类型。

关于您与原始类型相关的评论,请注意您甚至无法将原始类型插入Vector. 来自javadoc:“Vector 类实现了一个可增长的对象数组”。当您添加基元时,自动装箱用于将它们转换为它们的对象对应部分。

于 2012-10-26T21:09:29.403 回答