/ dozerの/ polymorphism - java、ポリモーフィズム、ドーザー

ドーザーにおける多型 - java、多型、ドーザー

私は4つのクラスがあります。

public class A { }
public class B extends A { }
public class C extends B { }
public class D extends B { }

私はドーザーの文書で読んだものから継承に関しては、それはかなり単純明快でなければなりません、私はスーパークラスを互いにマッピングし、そしてサブクラスもマッピングする必要があります。 これがxmlの中の様子です。

<mapping>
<class-a>foo.A</class-a>
<class-b>foo.bar.A</class-b>
</mapping>

<mapping>
<class-a>foo.B</class-a>
<class-b>foo.bar.B</class-b>
</mapping>

<mapping>
<class-a>foo.C</class-a>
<class-b>foo.bar.C</class-b>
</mapping>

<mapping>
<class-a>foo.D</class-a>
<class-b>foo.bar.D</class-b>
</mapping>

これらのクラスはすべて同じです。つまり、DとDは同じ属性を持ち、CとCなどは同じです。

問題: 私はブルドーザーに渡しているオブジェクトでは、私はタイプBの属性。CまたはD(多態性)で初期化できます。 dozerが新しいマップされたオブジェクトを返すと、CやDではなく常にBの属性タイプを返します。 これを修正するには?

回答:

回答№1は1

を見てください 継承マッピングセクション。サブクラスを持つフィールドクラスにこのようなマッピングを使用できます。

<mapping>
<class-a>foo.Source</class-a>
<class-b>foo.Dest</class-b>
<field>
<a>attr</a>
<b>attr</b>
<a-hint>foo.B, foo.C, foo.D</a-hint>
<b-hint>foo.bar.B, foo.bar.C, foo.bar.D</b-hint>
</field>
</mapping>

編集:私はある種の自動多態性を実装する 機能リクエスト。私は思う、それは次のDozerのリリースに含まれるでしょう。


回答№2の場合は0

- 私はあなたが必要と思う explicit cast.

例えば:

B b = new C();

go(b)

//////////Called Method////////////////

public void go(B bx){

C c = (C) bx;

}