【问题标题】:Using @Getter on Classes, Enums, etc在类、枚举等上使用 @Getter
【发布时间】:2019-02-06 10:15:35
【问题描述】:

我遇到了在枚举声明中使用@Getter 的代码,我想知道是否可以在枚举声明中使用@Getter 以及它的用途是什么?

据我所知,@Getter 在成员变量上生成 getter 方法。我错过了什么吗?

是否也可以用@Getter 注释类?

【问题讨论】:

标签: java spring lombok accessor


【解决方案1】:

如果你检查Lombok's @Getter and @Setter Reference,你可以看到:

您还可以在类上添加@Getter 和/或@Setter 注解。在这种情况下,就好像你用注解来注解该类中的所有非静态字段。

这意味着当您将@Getter 放入Class/Enum 级别时,它将为该Class/Enum 上的所有非静态成员生成getters,就像您为所有这些成员重复放入@Getter

示例:

为了说明这一点,这两个代码是等效的:

代码 1:

@Getter
public enum MyEnum {
    private int member1;
    private int member2;
}

代码 2:

public enum MyEnum {
    @Getter
    private int member1;
    @Getter
    private int member2;
}

这里将为两个成员生成getter 方法。

【讨论】:

    【解决方案2】:

    如果使用 Getter 注解,则常量并不重要。但是对于您创建的所有其他变量,都存在一个 getter 方法:

    @Getter
    public enum Test {
        TEST;
    
        private int variable;
    }
    

    所以在这个例子中你只得到了一个变量的getter方法。

    【讨论】:

      【解决方案3】:

      稍后添加 我认为@cнŝdk 的答案要好得多。所以,请使用它。

      最初写的

      @Getter、@Setter 和 @Data 注释由 Lombok 库提供。 @Data 将生成 setter 和 getter。

      是的,这些注解可以与类和枚举一起使用。

      如果您使用的是 maven,那么您可以添加 Lombok 作为您的依赖项,如下所示:

      <dependency>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                  <version>1.16.12</version>
      </dependency>
      

      要了解更多关于龙目岛的信息,请访问https://projectlombok.org/

      【讨论】:

      • 如果您使用的是 IntelliJ,请为它安装 Lombok 插件。
      • 这如何回答 OP 问题?
      【解决方案4】:

      我们可以用@Getter 和/或@Setter 注释任何字段,让lombok 自动生成默认的getter/setter。 Please refer here 了解更多详情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-30
        • 1970-01-01
        • 2016-04-03
        • 2012-11-05
        相关资源
        最近更新 更多