Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何绕过Java中不存在的默认参数/如何对may字段使用方法重载?_Java_Overloading_Constructor Overloading - Fatal编程技术网

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

如何绕过Java中不存在的默认参数/如何对may字段使用方法重载?,java,overloading,constructor-overloading,Java,Overloading,Constructor Overloading,我知道Java中没有方法的默认参数,这可以通过使用方法重载来解决 但是,我有一个大约有20个字段的类,我应该能够用这些字段的任意组合创建该类: import java.util.Date; public class RequestBodyGenerator { private Integer length; private String author; private String title; private Long descriptionId; p

我知道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中不起作用。如果我为每种可能的情况编写一个构造函数,我最终会编写数百个构造函数,因此这显然不是解决问题的方法。

使用,首先是由提出的,是解决我问题的方法。

使用,这就是构建器的用途。除了构建器,您可能还希望使用来表示缺少的数值。对于快速答案,生成器模式正是我所需要的。