0

Javaにはメソッドのデフォルト引数がないことを知っています。これは、この質問のようにメソッドのオーバーロードを使用して修正できます。

ただし、約 20 のフィールドを持つクラスがあり、フィールドの任意の組み合わせでそのクラスを作成できるはずです。

import java.util.Date;

public class RequestBodyGenerator {
    private Integer length;
    private String author;
    private String title;
    private Long descriptionId;
    private Long productId;
    private Integer yearMin;
    private Integer yearMax;
    private Long publisherId;
    private String publisher;
    private String ean13;
    private String imageFilter;
    private String image;
    private Date createdFrom;
    private Date createdFromTime;
    private Date createdTo;
    private Date createdToTime;
    private Date shopSellFrom;
    private Date shopSellFromTime;
    private Date shopSellTo;
    private Date shopSellToTime;
    private Integer minPrice;
    private Integer maxPrice;
    private String moreInfo;
    private String storagePlace;
    private String creator;
    private String orderBy;
    private Boolean __checkbox_needImage;

}

このクラスは http リクエストの本文を作成するため、コンストラクターが取得するどのフィールドもリクエスト本文に値を持ち、他のフィールドは空の文字列である必要があります。フィールドが 1 つしかない可能性があります。たとえば、「タイトル」フィールドに指定するとします。他のすべてのフィールドは空ですが、10 以上のフィールドに値を指定する可能性があります。

私の問題は、空の文字列をデフォルトの引数として使用することで解決できますが、これは Java では機能しません。考えられるケースごとにコンストラクターを作成すると、何百ものコンストラクターを作成することになるため、これは明らかに適切な方法ではありません。

4

1 に答える 1

0

khelwoodによって最初に提案されたbuild patternを使用することが、私の問題の解決策でした。

于 2017-01-04T14:51:44.650 に答える