Согласно действующему Java 2ed , элемент 2
шаблон конструктора телескопирования , в который вы предоставляете конструктору с только необходимые параметры, другой с одним необязательным параметром, третий с двумя необязательными параметрами, и так далее, что завершится конструктор со всеми необязательными параметры.
Пример конструкторов класса, применяющего этот шаблон, заимствован из Когда вы будете использовать шаблон Builder?
кодовый набор 1a
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean cheese, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon) { ... }
размер - это обязательный параметр . сыр, пепперони и бекон являются необязательными параметрами. Предположим, я хотел бы предоставить конструктор, как показано ниже.
кодовый набор 1b
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon, int price, int) { ... }
Другой пример - это
кодовый набор 2
public AttributeKey(String key, Class clazz)
public AttributeKey(String key, Class clazz)
public AttributeKey(String key, Class clazz, @Nullable T defaultValue, boolean isNullValueAllowed)
public AttributeKey(String key, Class clazz, @Nullable T defaultValue, boolean isNullValueAllowed, @Nullable ResourceBundleUtil labels)
два последних примера , которые я дал не не соответствует характеристикам телескопического конструктора , как кодовый набор 1a