在Java枚举中使用lombok @Getter注解[重复]。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java枚举中使用lombok @Getter注解[重复]。相关的知识,希望对你有一定的参考价值。

我试图使用一个枚举作为地图,从alpha-2国家代码中检索国家名称。我有一个这样的枚举类。

public enum Country {
    AF("Afghanistan");

    @Getter
    private final String fullName;

    private Country(String fullName) {
      this.fullName = fullName;
    }

}

我想如果我把一个新的国家对象实例化,比如说:

String country = new Country("AF").getFullName();

变量 country 应该设置为 "阿富汗",但我得到一个错误信息,即该对象不能是 Country 不能被实例化。

答案

检查这个 https:/stackoverflow.coma168514223874879。Enums不能被实例化,它们就像一个常量,你必须在编译时定义它们,我想。

另一答案

枚举是一个特殊的 "类",它代表了一组常量(不可改变的变量,比如最终变量)。

你可以用点阵法访问枚举常量。

String country = Country.AF.getFullName();

枚举常量是公共的,静态的和最终的。你不能使用以下方法创建枚举实例 new.

枚举常量 (AF 在你的例子中)是你唯一可以使用的实例。

另一答案

你不能创建一个对象。

检查这个文档。https:/docs.oracle.comjavase7docsapijavalangEnum.html。

试试这个。String country = Country.AF.getFullName();

EDIT: 如果你想用一个变量来代替硬编码的字符串,你可以定义一些方法,如 findByCountryCode(countryCode) 在你的枚举中

public Country findByCountryCode(String code) {
    for (Country value : Country.values()) {
        if (value.getFullName().equals(code)) {
            return value;
        }
    }
    return null;
}

以上是关于在Java枚举中使用lombok @Getter注解[重复]。的主要内容,如果未能解决你的问题,请参考以下文章

Idea插件之Lombok简化实体类setter/getter操作

lombok.Getter cheated me

在 Lombok 中省略一个 Setter/Getter

lombok 注解

Java编码辅助工具:Lombok —— 避免重复臃肿的代码,提高效率

lombok配置与使用