Реализация двух билдеров в одном классе

172
27 июля 2021, 22:30

Пытаюсь реализовать два билдера для двух разных наборов параметров (тип набора определяется по полю type)

@RequiredArgsConstructor
@Getter
class SomeCode {
    private final String type;
    private String firstName;
    private String lastName;
    private String state;
    private int age;

    @Builder(builderMethodName = "oneBuilder")
        private static SomeCode one(@NonNull String firstName, @NonNull String lastName) {
        SomeCode one = new SomeCode("personal");
        one.firstName = firstName;
        one.lastName = lastName;
        return one;     
    }
    @Builder(builderMethodName = "twoBuilder")
        private static SomeCode two(@NonNull String state, int age) {
        SomeCode two = new SomeCode("date");
        two.state = state;
        two.age = age;
        return two;
    }   
}

Вызываю билдер:

SomeCode testCase = SomeCode.oneBuilder()
                .firstName("test")
                .lastName("two")
                .age(2)
                .build();

Как видно, в билдер_1 попадает параметр age, который соответствует билдеру_2. Так-же у объекта testCase можно вызвать геттер параметра, который в билдер не попадает.

Что можно сделать с этим классом, что-бы параметры одного билдера не подмешивались в параметры второго билдера при создании объекта.

Второе - что можно сделать с геттерами, что-бы они были доступны только для своего билдера?

READ ALSO
Spring Security возвращает ошибку 405 Request Method 'POST' Not Supported

Spring Security возвращает ошибку 405 Request Method 'POST' Not Supported

Я использую Spring Security и Spring MVC в своем проекте, и я пытаюсь сделать страницу авторизации, но, к сожалению, при нажатии на кнопку "Log in", появляется...

245
Удаление элемента из ArrayList Java

Удаление элемента из ArrayList Java

У меня есть класс Worker и форма расчета ЗП

226
нужно найти месторасположение файла, по его названию

нужно найти месторасположение файла, по его названию

есть имя файла Chrome, нужно только по его названию, найти где файл находится

187
Как изменять переменные из функции main в других функциях?

Как изменять переменные из функции main в других функциях?

Хочу, чтобы переменная one приняла значение two в теле не основной функцииВ с++ на это есть указатели

188