Java 如何使用字符串数组填充枚举友好字符串
我编写代码,用友好的字符串名称填充我的枚举,例如游泳时间、徒步旅行时间Java 如何使用字符串数组填充枚举友好字符串,java,enums,Java,Enums,我编写代码,用友好的字符串名称填充我的枚举,例如游泳时间、徒步旅行时间 public enum SeasonTypeEnum { summer("Swimming Time"), auturm("Hiking Time"), winter("Skiing Time"), spring("Planting Time"); private String friendlyName; private SeasonTypeEnum(String frie
public enum SeasonTypeEnum {
summer("Swimming Time"),
auturm("Hiking Time"),
winter("Skiing Time"),
spring("Planting Time");
private String friendlyName;
private SeasonTypeEnum(String friendlyName){
this.friendlyName = friendlyName;
}
@Override
public String toString(){
return friendlyName;
}
}
然而,我正在考虑将这些刺存储在一个数组中并从中提取。我如何才能做到这一点?您可以使用Enum.values()来实现这一点
例如:
SeasonTypeEnum[] vals = SeasonTypeEnum.values();
String[] strs = new String[vals.length];
for (int i = 0; i < vals.length; i++) {
strs[i] = vals[i].toString();
}
然而,
enum
很可能是最好的解决方案
我写这样一个数组的方法
static final String[] seasons =
"Swimming Time,Hiking Time,Skiing Time,Planting Time".split(",");
如果要从枚举中提取,可以这样做
static final SeasonTypeEnum[] VALUES = values();
public static String friendlyNameFor(int id) {
return VALUES[id].friendlyName;
}
您可以将友好字符串存储在私有静态数组中,并通过添加索引作为条目字段与枚举条目关联:
public enum SeasonTypeEnum {
private static String seasons = new String[] {"Swimming Time", "Hiking Time", "Skiing Time", "Planting Time"};
summer(0),
auturm(1),
winter(2),
spring(3);
private int index;
private SeasonTypeEnum(int index) {
this.index = index;
}
@Override
public String toString() {
return seasons[index];
}
}
或者只需调用
values()
;除非代码每秒进行数百万次调用,否则通过创建常量数组所获得的性能增益将是微不足道的。@Aarondigula因为您的IDE可以为您执行此重构,所以我会将其写成value()[id]
,但使用引入常量
重构。
public enum SeasonTypeEnum {
private static String seasons = new String[] {"Swimming Time", "Hiking Time", "Skiing Time", "Planting Time"};
summer(0),
auturm(1),
winter(2),
spring(3);
private int index;
private SeasonTypeEnum(int index) {
this.index = index;
}
@Override
public String toString() {
return seasons[index];
}
}