java - 反射可序列化的对象列表

标签 java reflection serialversionuid

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

我实际上得到了答案,只是想了解为什么这样做时我会遇到非法参数异常:无法将静态最终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));
         }
     }

关于java - 反射可序列化的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056206/

相关文章:

java - 如何设置从数据库获取数据的超时?

java - 用 Java 解析 HTML 网页

java - 为什么这不想绘制多次?

java - 在Java方法引用中是反射API的一部分

python - pickle 对象版本控制

java - Admob 广告无法根据屏幕方向正确调整大小 [包括图片]

scala - 从构造函数参数值映射创建类实例

c# - 如何使用反射调用通用异步方法

java - serialversionUID 不匹配