gpt4 book ai didi

java - Lombok 的默认值。如何使用构造函数和生成器初始化默认值

转载 作者:IT老高 更新时间:2023-10-28 20:53:47 27 4
gpt4 key购买 nike

我有一个对象

@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

更新
截至 2021 年 1 月,this bug seems to be fixed in Lombok ,至少对于生成的构造函数。注意还有a similar issue当您混合 Builder.Default 和显式构造函数时。

关于java - Lombok 的默认值。如何使用构造函数和生成器初始化默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com