【问题标题】:When we using final field in entity? [duplicate]当我们在实体中使用最终字段时? [复制]
【发布时间】:2019-03-06 06:46:52
【问题描述】:

有时我看有些人制作最终字段并创建 Lombok 看起来像:

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

        private final String firstName;

        private final String middleName;

        private final String lastName;

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

【问题讨论】:

标签: java lombok


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 2013-05-07
      • 2012-10-13
      • 2018-02-04
      相关资源
      最近更新 更多