将lombok@Getter注释与Java枚举一起使用

将lombok@Getter注释与Java枚举一起使用,java,enums,lombok,Java,Enums,Lombok,我试图使用枚举作为映射,从alpha-2国家代码检索国家名称。我有这样一个枚举类: public enum Country { AF("Afghanistan"); @Getter private final String fullName; private Country(String fullName) { this.fullName = fullName; } } 我希望如果我像这样实例化一个新的Country对象 String

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

public enum Country {
    AF("Afghanistan");

    @Getter
    private final String fullName;

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

}
我希望如果我像这样实例化一个新的Country对象

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

变量
country
应设置为“Afghanistan”,但我得到一个错误,即对象不能是
country
不能实例化

检查这个 枚举不能被实例化,它们就像一个常量,您必须在编译时定义它们,我想检查一下
枚举不能被实例化,它们就像一个常量,你必须在编译时定义它们,我想你不能创建一个对象

检查此文档:

然后试试这个:
String country=country.AF.getFullName()

编辑:如果要使用变量代替硬编码字符串,可以在枚举中定义一些方法,如
findByCountryCode(countryCode)

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

不能创建对象

检查此文档:

然后试试这个:
String country=country.AF.getFullName()

编辑:如果要使用变量代替硬编码字符串,可以在枚举中定义一些方法,如
findByCountryCode(countryCode)

public Country findByCountryCode(String code) {
    for (Country value : Country.values()) {
        if (value.getFullName().equals(code)) {
            return value;
        }
    }
    return null;
}
枚举是一个特殊的“类”,它表示一组常量(不可更改的变量,如最终变量)

您可以使用点语法访问枚举常量:

String country = Country.AF.getFullName();
枚举常量是公共的、静态的和最终的。不能使用
new
创建枚举实例

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

枚举是一个特殊的“类”,它表示一组常量(不可更改的变量,如最终变量)

您可以使用点语法访问枚举常量:

String country = Country.AF.getFullName();
枚举常量是公共的、静态的和最终的。不能使用
new
创建枚举实例


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

尝试
AF.getFullName()
;)(枚举构造函数必须全部在枚举内调用……不带“new”关键字!;…因此
AF(“阿富汗”)
是枚举(实例)声明+构造函数调用)问题是,理想情况下,我希望使用一个变量来代替硬编码字符串
string country=new country(countryCode).getFullName()。使用
Country.AF
,或
Country.valueOf(“AF”)
。此外,这与Lombok无关,您只需要使用它来生成一个getter。如果您想从字符串
“AF”
“AF”
中获得
AF
国家,您可以使用:
Country.valueOf(“AF”)
。如果您需要将此功能用于全名,则必须实现。尝试
AF.getFullName()
)(枚举构造函数必须全部在枚举内调用……不带“new”关键字!;…因此
AF(“阿富汗”)
是枚举(实例)声明+构造函数调用)问题是,理想情况下,我希望使用一个变量来代替硬编码字符串
string country=new country(countryCode).getFullName()。使用
Country.AF
,或
Country.valueOf(“AF”)
。此外,这与Lombok无关,您只使用它来生成一个getter。如果您希望从字符串
“AF”
“AF”
获得
Country,您可以使用:
Country.valueOf(“AF”)
。如果您需要将此功能用于全名,则必须实现。