【发布时间】:2017-01-03 19:32:56
【问题描述】:
我知道 Java 中的方法没有默认参数,这可以通过使用 this 问题中的方法重载来解决。
但是,我有一个包含大约 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请求的body,所以无论构造函数获取的哪个字段都会在请求body中有一个值,其他的应该是一个空字符串。可能只有一个字段,假设我在“标题”字段中给出,所有其他字段都是空的,但可能会发生我会给 10+ 字段赋值。
我的问题可以通过使用空字符串作为默认参数来解决,但这在 Java 中不起作用。如果我为每种可能的情况编写一个构造函数,我最终会编写数百个,所以这显然不是要走的路。
【问题讨论】:
-
这就是建造者的目的。
-
除了builder之外,您可能还想使用null object pattern来表示缺失的数值。
-
感谢快速回答,构建器模式正是我所需要的。
标签: java overloading constructor-overloading