Lombok: @Builder anotasi kehilangan nilai default bidang

Dibuat pada 28 Jul 2016  ·  3Komentar  ·  Sumber: projectlombok/lombok

public class BuilderAnnotationTest {

    <strong i="5">@Test</strong>
    public void defalutValue() throws Exception {
        assertThat(Entity.builder().build().isSingle()).isTrue();
    }
}

<strong i="6">@Getter</strong>
<strong i="7">@Builder</strong>
class Entity{
    private String name;
    private boolean single = true;
}

Komentar yang paling membantu

Duplikat #916. Ada solusinya

<strong i="6">@Getter</strong>
@Builder(toBuilder=true)
<strong i="7">@AllArgsConstructor</strong>
@NoArgsConstructor(access=AccessLevel.PRIVATE)
public class Entity {
    public static EntityBuilder builder() {
        return PROTOTYPE.toBuilder();
    }

    private static final Entity PROTOTYPE = new Entity();

    private String name;
    private boolean single = true;
}

Semua 3 komentar

Duplikat #916. Ada solusinya

<strong i="6">@Getter</strong>
@Builder(toBuilder=true)
<strong i="7">@AllArgsConstructor</strong>
@NoArgsConstructor(access=AccessLevel.PRIVATE)
public class Entity {
    public static EntityBuilder builder() {
        return PROTOTYPE.toBuilder();
    }

    private static final Entity PROTOTYPE = new Entity();

    private String name;
    private boolean single = true;
}

Ini juga berfungsi

public class BuilderAnnotationTest {

    <strong i="6">@Test</strong>
    public void defalutValue() throws Exception {
        assertThat(new Entity().toBuilder().build().isSingle()).isTrue(); // note the "new" here
    }
}

<strong i="7">@Getter</strong>
@Builder(toBuilder = true)
class Entity{
    private String name;
    private boolean single = true;
}

Gunakan @Builder.Default untuk memperbaiki masalah ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat