Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反射可序列化的对象列表_Java_Reflection_Serialversionuid - Fatal编程技术网

Java 反射可序列化的对象列表

Java 反射可序列化的对象列表,java,reflection,serialversionuid,Java,Reflection,Serialversionuid,我曾在下列方面提出一个问题: 我实际上得到了我的答案,只是想了解为什么这样做时我会遇到illegalArgumentException:无法将静态最终ArrayList SerialVersionUID设置为java.lang.long。但当我把一个物体反射到另一个物体上时,没有错误 List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); List listB=(List)convert

我曾在下列方面提出一个问题:

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

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

转换方法在尝试分配最终字段时出现问题。我建议您修改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));
         }
     }

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));
         }
     }

为什么当反射列表出现这个问题时,只要对象对对象不发生什么?这是否意味着对象对对象不分配最终字段?抱歉,这是我不理解的部分。如果只有对象对对象没有发生,为什么反射列表会出现此问题?这是否意味着对象对对象不分配最终字段?对不起,这是我不明白的部分