Lombok中的默认值。如何使用构造函数和构建器初始化默认值

我有一个对象

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

public class UserInfo {

private int id;

private String nick;

private boolean isEmailConfirmed = true;

}

我用两种方式初始化它

UserInfo ui = new UserInfo();

UserInfo ui2 = UserInfo.builder().build();

System.out.println("ui: " + ui.isEmailConfirmed());

System.out.println("ui2: " + ui2.isEmailConfirmed());

这是输出

ui: true

ui2: false

似乎builder没有获得默认值。我在@Builder.Default属性中添加了注释,对象现在看起来像这样

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

public class UserInfo {

private int id;

private String nick;

@Builder.Default

private boolean isEmailConfirmed = true;

}

这是控制台输出

ui: false

ui2: true

我怎样才能使他们俩都成为true

回答:

我的猜测是,这是不可能的(没有删除代码)。但是,为什么不仅仅实现所需的构造函数呢?Lombok旨在使您的生活更轻松,如果Lombok无法解决某些问题,请按照老式的方式进行操作。

@Data

@Builder

@AllArgsConstructor

public class UserInfo {

private int id;

private String nick;

@Builder.Default

private boolean isEmailConfirmed = true;

public UserInfo(){

isEmailConfirmed = true;

}

}

控制台输出:

ui: true

ui2: true

以上是 Lombok中的默认值。如何使用构造函数和构建器初始化默认值 的全部内容, 来源链接: utcz.com/qa/432591.html

回到顶部