在 类、枚举等上使用 @Getter

Using @Getter on Classes, Enums, etc

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

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

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

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

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

原写

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

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

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

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

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

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

@Getter
public enum Test {
    TEST;

    private int variable;
}

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

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

You can also put a @Getter and/or @Setter annotation on a class. In that case, it's as if you annotate all the non-static fields in that class with the annotation.

这意味着当你把 @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 方法。