2

MapStructを使用して、Bean クラスのフィールドを辞書のようなクラスにマップしたいと思います。私のソースクラスは標準の Bean です (簡略化された例):

public class Bean {
    private String a;
    private String b;

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
    }
}

次に、これらのフィールドをマップのようなコンテナーにマップします。

public class Dict {

    public enum Tag {
        A,
        B
    }

    private Map<Tag, String> dict = new HashMap<>();

    public String getEntry(Tag tag) {
        return dict.get(tag);
    }

    public void setEntry(Tag tag, String s) {
        dict.put(tag, s);
    }
}

言い換えれば、MapStructに次のようなものを生成してもらいたいのです。

    target.setEntry(Dict.Tag.A, source.getA());
    target.setEntry(Dict.Tag.B, source.getB());

MapStruct のドキュメントで同様のものを見つけることができませんでした。target = "propertyname"マッピング ソース (ネストされたソース、式) を取得するための柔軟性はかなりありますが、ターゲットについては、柔軟性の余地があまりない記法しかわかりません。

にマップするための最良のソリューションは何java.util.Mapですか?

4

2 に答える 2

2

この種のマッピングは、現在 MapStruct ではサポートされていません。以前から考えていましたが、まだ実装には至っていません。イシュー トラッカーでチケットを開いていただけますか?

于 2016-01-02T10:20:24.303 に答える