2017-01-03 6 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, поэтому в зависимости от того поля, получаемые конструктором, будут иметь значение в теле запроса, остальные должны быть пустой строкой. Возможно, что есть только одно поле, скажем, я указываю в поле «title», все остальные поля пустые, но может случиться так, что я дам значение 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) для представления отсутствующих числовых значений. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^