Java如何从类类型设置向量类型

Java如何从类类型设置向量类型,java,vector,Java,Vector,我有以下代码(反序列化类): 。。。。 Type=field.getGenericType(); if(类型instanceof ParameterizedType){ ParameteredType ptype=(ParameteredType)类型; 如果(c.getSimpleName().equals(“向量”)){ 类pta=(类)ptype.getActualTypeArguments()[0]; Vector v=(Vector)field.get(obj); 如果(v==null

我有以下代码(反序列化类):

。。。。
Type=field.getGenericType();
if(类型instanceof ParameterizedType){
ParameteredType ptype=(ParameteredType)类型;
如果(c.getSimpleName().equals(“向量”)){
类pta=(类)ptype.getActualTypeArguments()[0];
Vector v=(Vector)field.get(obj);
如果(v==null){
v=新向量();
字段集(obj,v);
}
....

我的问题是,我如何改变向量来获取某种类型的数据,仅仅是因为我知道它之前所获取的数据的类名(即pta var)?泛型是在编译时解析的,因此没有办法像您所列出的那样进行解析。只需使用
向量
向量
使用
向量
而不是
向量
即可。无论如何,在运行时会使用逻辑,并且向量将不再具有指定的类型


关于与基元类型相关的注释,请注意,您甚至无法将基元类型插入到
向量中。From:“Vector类实现了一个可增长的对象数组”。添加基元时,将使用基元将其转换为对象计数器部分。

执行向量v=(向量)字段。get(obj);给了我一个错误“Syntax error on token”class,标识符应该是“是的,它不起作用。我不知怎么弄错了。这种方法似乎不起作用,因为你不能把动态表达式放在尖括号之间,只能放在编译时已知的表达式上。泛型不处理基元类型,只处理它们的包装器(int vs.Integer)是否可以通过Class.forName()创建向量以某种方式传递类型?我猜不会。即使你可以-为什么会?也无法从代码中引用泛型类。即使向量是基元类型,对象也会工作吗?当然不会。你不能将基元添加到
向量
,因此,当我做向量时,它会认为对象是字符串(即使它应该是点或矩形…或其他)。请阅读以上我对其他答案的评论。@ScottDeutsch当你在做
向量
向量
时,它不是将你的内容解释为字符串,而是一个
对象
。如果在序列化之前你有
向量
,反序列化之后你将有一个
向量
向量
(取决于您将如何声明变量),但内容将包含
对象。
....
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);
    }
....