当我们在实体中使用final字段时?

时间:2019-03-06 06:46:52

标签: java lombok

有时候,我看起来有些人进入了决赛,并创造了龙目岛的样子:

@AllArgsConstructor(access = AccessLevel.PRIVATE) 
    public class Person {

        private final String firstName;

        private final String middleName;

        private final String lastName;

某些时间字段未标记为最终值。当我们在@Entity中标记最终字段时,什么时候不?

2 个答案:

答案 0 :(得分:0)

一旦您不希望在构造对象之后更改字段,就创建一个字段 final

它还可以在多线程环境中帮助确保安全的对象初始化和共享。

答案 1 :(得分:0)

在Lombok和@AllArgsConstructor批注中,可以使用final关键字来确保对象在构造函数中初始化后不会更改。此注释将获取所有字段以构建您的构造函数。

还有@RequiredArgsConstructor批注,该批注使用标有final的字段来构建构造函数:

@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class Person {
    private final String firstName;
    private final String middleName;
    private String lastName;
}

在delombok之后,您的构造函数将如下所示:

@java.beans.ConstructorProperties({"firstName", "middleName"})
private Person(String firstName, String middleName) {
    this.firstName = firstName;
    this.middleName = middleName;
}