0

私が取り組んでいるプロジェクトの 1 つでは、異なるシステムを使用しています。これらのシステムは独立して進化する必要があるため、これらのシステム間の通信を処理するための多数の CommunicationLib があります。CommunicationLib オブジェクトはシステム内では使用されず、システム間の通信でのみ使用されます。多くの機能でデータの取得が必要になるため、CommLib オブジェクトと同等の「ローカル」システム オブジェクトを作成しなければならないことがよくあります。このようなオブジェクトから CommLib オブジェクトに変換するには、Converter Utility クラスを使用します。

コードは次のようになります。

public static CommLibObjX objXToCommLib(objX p) {
    CommLibObjX b = new CommLibObjX();
    b.setAddressName(p.getAddressName());
    b.setCityId(p.getCityId());
    b.setCountryId(p.getCountryId());
    b.setFieldx(p.getFieldx());
    b.setFieldy(p.getFieldy());
            [...]


    return b;
}

そのようなコードを自動的に生成する方法はありますか? Eclipse またはその他のツールを使用していますか? 一部のフィールドは別の名前になっている可能性がありますが、Converter メソッドのドラフトを生成して手動で編集したいと考えています。

4

2 に答える 2

2

Apache commons-beanutils を試す

BeanUtils.copyProperties(p, b);

プロパティ名が同じであるすべての場合に、元の Bean から宛先 Bean にプロパティ値をコピーします。

于 2013-02-05T13:11:17.903 に答える
1

ソース コードを自動的に生成する必要があると感じた場合は、おそらく何か間違ったことをしている可能性があります。2 つの「システム」間の通信の設計を再検討する必要があると思います。これらの「システム」はどのように通信しますか?

  • それらが異なるコンピューター上または異なるプロセスにある場合は、オブジェクトをシリアル化するのではなく、それらが使用するワイヤ プロトコルを設計します。
  • それらが一緒に使用されるクラスである場合は、両方に適したより良いエンティティ クラスを設計します。
于 2013-02-05T13:13:19.647 に答える