Ломбок возвращает пользовательский объект сборки в конструктор - PullRequest
0 голосов
/ 23 мая 2018

У меня есть класс, который я не могу изменить, но хотел бы, чтобы у него был конструктор.Я использую Ломбок.

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class SampleClass {
    private String a;
    private String b;
}

Чтобы создать для этого конструктор, я создаю класс Builder:

@Builder
public class SampleClassBuilder {
    private String x;
    private String y;

    public SampleClass build() {
        SampleClass sampleClass = new SampleClass();
        sampleClass.setA(x + "testX");
        sampleClass.setB(y + "textY");
        return sampleClass;
    }
}

Чтобы использовать его, мне нужно будет выполнить:

SampleClass sampleClass = SampleClassBuilder.builder().x("x -- ").y("y---").build().build();

IsЕсть ли способ переопределить метод сборки, чтобы вернуть SampleClass, чтобы избежать создания build.build?

1 Ответ

0 голосов
/ 23 мая 2018

Я не думаю, что Ломбок может сделать это: вернуть другой объект из Builder.Он даже не может вызвать super в компоновщике.

Возможно, вы могли бы определить свою собственную сборку, не используя Lombok:

public class SampleBuilder {
    private String x;
    private String y;

    public static SampleBuilder builder() {
        return new SampleBuilder();
    }

    private SampleBuilder() {
    }

    public SampleBuilder x(String x) {
        this.x = x;
        return this;
    }

    public SampleBuilder y(String y) {
        this.y = y;
        return this;
    }

    public SampleClass build() {
        SampleClass sampleClass = new SampleClass();
        sampleClass.setA(x + "testX");
        sampleClass.setB(y + "textY");
        return sampleClass;
    }
}

А в коде вашего клиента вы можете увидеть Lombok's like использование компоновщика:

SampleClass obj = SampleBuilder.builder().x("x").y("y").build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...