2010-01-13 4 views
1

직렬화 가능 객체의 목록 : 자바 정적 설정할 수 없습니다 최종 ArrayList를 SerialVersionUID를을 : 할 것입니다이 작업을 수행 할 때하는 것은, IllegalArgumentException를 명중 이유를 이해하기 위해 reflect a list object 실제로 내 대답을 얻었다반사 난에 질문 물었다

그냥 원하는을 .lang.long. 하지만 한 객체가 다른 객체를 반영 할 때 오류가 발생하지 않습니다.

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

답변

1

마지막 필드를 할당하려고 할 때 변환 방법에 문제가 있습니다. 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)); 
     } 
    } 
+0

왜 객체에 대해 아무 것도 발생하지 않으면 반사 목록에이 문제가 발생하는 이유는 무엇입니까? 그것이 최종 필드를 할당하지 않을 것이라는 것을 반대하는 객체를 의미합니까? 미안하지만이 부분을 이해할 수 없습니다. – user236501