2012-01-06 2 views
1

Apache Commons BeanUtils.cloneBean과 동일한 순수 스칼라가 있습니까?순수한 스칼라와 같은 Apache Commons beanutils가 있습니까?

나는 beanutils를 사용할 수 있지만 @ scala.reflect.BeanInfo를 내 scala 클래스에 추가해야한다.

클래스 A와 클래스 B가 주어지면 클래스 A의 객체에서 모든 필드를 복사하여 클래스 B의 새 객체를 만드는 방법이 필요합니다. 클래스 A와 클래스 B에있는 필드 만 복사하면됩니다. 같은 이름과 유형.

내가 이것을 수행하는 이유는 탁월한 casbah와 Salat를 사용하여 MongoDB 데이터베이스에서 데이터를 읽고, 데이터를 광범위하게 비슷하게 변형하고 새로운 MongoDB 데이터베이스에 쓰는 것입니다. 따라서 일반적인 필드의 경우 각 필드에 대한 코드를 작성하지 않고도 모든 공통 필드를 한 줄로 복사 한 다음 다른 필드를 변환하기 만하면됩니다.

수동으로 각 필드를 복사하는 것은 올바른 방법입니다. 복사하는 대상에 대해 명시되어 있기 때문일 수 있습니다. 값을 클래스 B의 생성자에 전달할 수 있습니다.

+1

클래스 B가 완료하기 위해 클래스 A가 제공하는 것보다 많은 필드가 필요한 경우는 어떻게합니까? bean 스타일의 클래스는 bean이'null'을 사용하기 때문에 좋은 스칼라 스타일이 아닙니다. –

+0

안녕하세요 Dan, 귀하의 의견에 감사드립니다. 그렇습니다, 저는 일종의 감각적 인 beanutils가 관용적 인 스칼라가 아니기 때문에 제 질문이었습니다. 클래스 B가 가변적 인 객체를 사용할 수있는 것보다 더 많은 필드를 필요로한다면, 지금 당장 이것을 구현할 때마다 클래스 A에서 클래스 B로 각 필드를 수동으로 옮겨 놓을 것입니다. 사례 클래스 생성자. 일부 필드는 리터럴 사본이며, 다른 필드는 여러 필드로 분할되고 다른 필드는 계산되거나 데이터 소스에서 출처가 지정됩니다. – foolshat

답변

0

저는 클래스 A에서 클래스 B 로의 각 필드를 변환하여 필요한 경우 클래스 B에서 필요한 모든 새 필드를 변환하고 추가하는 간단한 방법을 사용했습니다. 나를 위해 일합니다.