如何绕过java中不存在的默认参数/如何对may字段使用方法重载?

sulc1iza  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(233)

我知道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请求的主体,因此构造函数得到的任何字段都将在请求主体中有一个值,其他字段应该是一个空字符串。有可能只有一个字段,假设我给了一个“title”字段,所有其他字段都是空的,但可能我会给10+个字段赋值。
我的问题可以通过使用空字符串作为默认参数来解决,但这在java中不起作用。如果我为每种可能的情况编写一个构造函数,我最终会编写成百上千的构造函数,所以这显然不是我要走的路。

js81xvg6

js81xvg61#

使用khelwood首先提出的构建模式是解决我问题的方法。

相关问题