使用 Java Lombok Builder 更新类中的不同变量

问题描述 投票:0回答:1

我有以下课程

@Builder
public class User {

    private String userName;
    private String email;
    private String userEmail;

}

我想根据

userEmail
userName
获得的输入设置值
email
Builder
可以吗?我不想直接设置
userEmail
的值。

示例

this.userEmail = userName + email

理想情况下,我希望在构造函数中完成一次

我目前正在构建这样的对象,但我不确定如何初始化

userEmail
字段。

User.builder()
.userName("sample-username)
.email("sample-email")
.build();
java lombok builder
1个回答
0
投票

虽然您给出的示例看起来很人为(将名称与电子邮件连接有任何实际用途吗?),您可以使用 Lombok 的 GetterLazy

来自医生,

你可以让 lombok 生成一个 getter,它将在第一次调用该 getter 时计算一次值,并从那时起缓存它。 [...] 要使用此功能,请创建一个私有最终变量,使用运行成本较高的表达式对其进行初始化,并使用 @Getter(lazy=true) 注释您的字段。该字段将对代码的其余部分隐藏,并且当第一次调用 getter 时,表达式的计算次数不会超过一次。

@Builder
private static class User {
    private String userName;
    private String email;
    @Getter(lazy=true)
    private final String userEmail = userName + email;
}

这样,

userEmail
字段将无法通过构建器设置。

请注意,该字段只会在调用 getter (getUserEmail()) 时才会初始化,而不是在直接访问该字段时初始化。

    

© www.soinside.com 2019 - 2024. All rights reserved.