反映可序列化的对象列表

时间:2010-01-13 11:26:42

标签: java reflection serialversionuid

我在reflect a list object

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

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

1 个答案:

答案 0 :(得分: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));
         }
     }