我在以下问题中提出了一个问题: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));
}
}