将lombok@Getter注释与Java枚举一起使用
我试图使用枚举作为映射,从alpha-2国家代码检索国家名称。我有这样一个枚举类:将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
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”)
。如果您需要将此功能用于全名,则必须实现。