我在以下问题中提出了一个问题:reflect a list object

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

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

最佳答案

尝试分配最终字段时,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));
         }
     }

09-15 23:27