我问了一个问题: 反映列表对象

实际上,我得到的答案只是想了解为什么什么时候我会击中IllegalargumentException:无法将静态最终arraylist serialversionuid设置为java.lang.long。但是,当我做一个对象时,反射到另一个对象没有错误。

List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); 
有帮助吗?

解决方案

转换方法试图分配最终字段时,它存在问题。我建议您修改转换方法如下。

    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));
         }
     }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top