【问题标题】:Reflection a list of object which is serializable反射可序列化的对象列表
【发布时间】:2011-01-04 14:24:18
【问题描述】:

我在reflect a list object提出了一个问题

我实际上得到了答案,只是想了解为什么这样做时我会遇到非法ArgumentException:无法将静态最终 ArrayList SerialVersionUID 设置为 java.lang.long。但是当我将一个对象反射到另一个对象时没有错误。

List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); 

【问题讨论】:

    标签: java reflection serialversionuid


    【解决方案1】:

    convert 方法在尝试分配最终字段时出现问题。建议你修改convert方法如下。

        for (Field targetField : targetClass.getDeclaredFields()) {
            if (!Modifier.isFinal(targetField.getModifiers())) {
                targetField.setAccessible(true);
                Field field =
                    instance.getClass().getDeclaredField(targetField.getName());
                field.setAccessible(true);
                targetField.set(target, field.get(instance));
             }
         }
    

    【讨论】:

    • 如果只有对象到对象什么都没有发生,为什么反射列表会出现这个问题?这是否意味着对象对对象不会分配最终字段?对不起,这是我不明白的部分
    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多