2010-01-13 20 views
1

我曾問一個問題:reflect a list object反思對象的列表,它是可序列化

其實,我有我的回答只是想了解爲什麼當爲此,我將打拋出:IllegalArgumentException:不能設置靜態最後的ArrayList的serialVersionUID到Java .lang.long。但是當我做一個對象反射到另一個對象時沒有錯誤。

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

回答

1

轉換方法嘗試分配最終字段時出現問題。我建議你修改轉換方法如下。

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

爲什麼當反射列表得到這個問題,如果只有對象對象什麼都沒有發生?這是否意味着反對的對象不會分配最終字段?對不起,這是我不明白的部分 – user236501 2010-01-13 11:42:24