2012-01-06 12 views
1

Apache Commons BeanUtils.cloneBeanに相当する純粋なScalaはありますか?Apache Commons Beanutilsに相当する純粋なScalaはありますか?

私はbeanutilsを使うことができましたが、@ scala.reflect.BeanInfoを自分のscalaクラスに追加する必要があります。

クラスAとクラスBがある場合、クラスAのオブジェクトからすべてのフィールドをコピーしてクラスBの新しいオブジェクトを作成する方法が必要です。同じ名前とタイプ。

これは、優秀なcasbahとSalatを使ってMongoDBデータベースからデータを読み込み、データを広範な形に変換し、新しいMongoDBデータベースに書き込むからです。だから共通の分野では、私はちょうど1行にすべての共通のフィールドをコピーし、各フィールドのコードを記述する必要はなく、次に異なるフィールドを変換します。

おそらく、手動で各フィールドをコピーするのは正しい方法です。これはコピーする内容を明示的に示しているためです。私はクラスBのコンストラクタに値を渡すことができました。

+1

クラスBが完了するためにクラスAよりも多くのフィールドを必要とする場合はどうなりますか? Beanスタイルのクラスは、Beanが 'null'を使うことに依存しているため、Scalaスタイルではありません。 –

+0

こんにちはダン、ご意見ありがとうございます。はい、私は一種の感知されたbeanutilsは慣用的なScalaではなかったので、私の質問です。クラスBがより多くのフィールドを必要とする場合、私は可変オブジェクトを使うことができますが、これをいつでも実装できるようになると、クラスAからクラスBへの各フィールドを手動で転記しますケースクラスのコンストラクタです。いくつかのフィールドはリテラルコピーであり、他のフィールドは複数のフィールドに分割され、他のフィールドは計算されるか、データソースから供給されます。 – foolshat

答えて

0

私は、クラスAからクラスBへの各フィールドの変換と、必要に応じてクラスBで必要な新しいフィールドの変換と簡単なアプローチを取ってきました。私のために働く。