我有一个对象
@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属性中添加了注释,对象现在看起来像这样
@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?
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