2012-10-19 3 views
3

동일한 필드이지만 다른 이름이 인 인 BeanUtils를 사용하여 클래스 A에서 클래스 B로 속성 값을 복사하고 싶습니다. differentName, differentAge 등의 속성 이름의지도를 제공하고 복사를 수행 할 수 있습니까? 이 방법이 Apache Commons 유틸리티 (다른 도구가 아님) 만 사용하는 것이 가능한지 알고 싶습니다.BeanUtils를 사용하여 Bean간에 다른 이름의 속성 복사

class ClassA{ 
    private String name; 
    private Integer age; 
    ... // Setter and Getter methods 
} 

class ClassB{ 
    private String differentName; 
    private Integer differentAge; 
    ... // Setter and Getter methods for the private fields 
} 

답변

1

아파치 코 몬즈 BeanUtils 키 값 쌍으로 콩을 채울지도를 받아 populate(Object bean, Map properties) 방법을 방법이 있습니다.

참고 : Apache-Commons에 대한 제한 사항을 보았습니다.하지만 여전히 다른 사람들에게 유용 할 수 있습니다.

이름이 일치하면 Dozer을 사용하면 자동으로 값이 복사됩니다. 또는 귀하의 경우와 마찬가지로 xml 매핑 파일에서 source 및 target 멤버를 지정할 수 있습니다.

+0

그러나 채우기에는 여전히 동일한 필드 이름이 필요합니다. 'age'속성을 'differentAge'속성에 어떻게 매핑합니까? – Cid

+0

링크 된 API에서 읽을 수 있듯이 "속성 - 속성 이름에 의해 키가 설정되고 해당 문자열 또는 문자열 [] 값이 설정됩니다". 열쇠는 "differentAge"이어야하며 값 20 또는 무엇인가 ...이 방법으로 또는 Dozer와 xml 매핑을 사용하여 값을 매핑해야합니다. – dngfng

+0

도저가 도움을주었습니다 – Cid