Я знаю, что нет аргументов по умолчанию для методов в 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, поэтому в зависимости от того поля, получаемые конструктором, будут иметь значение в теле запроса, остальные должны быть пустой строкой. Возможно, что есть только одно поле, скажем, я указываю в поле «title», все остальные поля пустые, но может случиться так, что я дам значение 10 + полям.
Моей проблемой может быть решена пустая строка в качестве аргумента по умолчанию, но это не работает на Java. Если бы я написал конструктор для каждого возможного случая, я бы закончил писать сотни из них, так что это, очевидно, не путь.
Используйте шаблон [строитель] (http://www.javaworld.com/article/2074938/core-java/too-many-parameters-in-java-methods-part-3-builder-pattern.html) – khelwood
Для этого нужен строитель. –
В дополнение к строителю вы также можете использовать [шаблон нулевого объекта] (https://en.m.wikipedia.org/wiki/Null_Object_pattern) для представления отсутствующих числовых значений. –