2017-01-03 18 views
0

我知道Java中没有方法的默认参数,这可以通过使用方法重载来解决,如this问题。如何绕过Java中不存在的默认参数/如何使用可能字段的方法重载?

不过,我有一类具有大约二十场,我应该能够创建一个类的字段的任意组合:

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请求的身体,故取其构造函数获取的字段将在请求体中具有值,其他字符串应该是空字符串。可能只有一个领域,可以说我在一个“标题”领域给予,其他所有领域都是空的,但可能发生的情况是我会给10+个领域提供价值。

我的问题可以通过使用一个空字符串作为默认参数来解决,但是这在Java中不起作用。如果我为每个可能的情况写了一个构造函数,我最终会写上数百个,所以这显然不是要走的路。

+11

使用[构建器模式](http://www.javaworld.com/article/2074938/core-java/too-many-parameters-in-java-methods-part-3-builder-pattern.html) – khelwood

+1

这是一个建设者的目的。 –

+1

除了构建器,您可能还想使用[空对象模式](https://en.m.wikipedia.org/wiki/Null_Object_pattern)来表示缺少的数值。 –

回答

相关问题