gpt4 book ai didi

java - 具有数字常量的枚举类型

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:24 24 4
gpt4 key购买 nike

我从遗留系统获取数据,其中某个字节字段是可能包含字母或数字的代码。我想将它映射到一个枚举,但我不确定如何处理数值。

public enum UsageCode {
A ("Antique"),
F ("Flood Damaged"),
N ("New");
// 0 ("Unknown") How to allow for value of "0"?

private final String description;

UsageCode(String description) {
this.description = description;
}

public String getDescription() {
return description;
}
}

最佳答案

把它翻过来:

public enum UsageCode {
ANTIQUE ('A'),
FLOOD_DAMAGED ('F'),
NEW ('N');
UNKNOWN ('0')

private static final Map<Character, UsageCode> charToEnum
= new HashMap<Character, UsageCode>();

static { // Initialize map from legacy code to enum constant
for (UsageCode code : values())
charToEnum.put(code.getCode(), code);
}

// Returns UsageCode for legacy character code, or null if code is invalid
public static UsageCode fromLegacyCode(char code) {
return charToEnum.get(code);
}

private final char code;

UsageCode(char code) {
this.code = code;
}

public char getCode() {
return code;
}
}

为了将传入的字符代码转换为枚举值,我添加了一个内部 Map<Character, UsageCode>和静态转换方法。

示例改编自 Effective Java 2nd Edition , 第 30 条。

关于java - 具有数字常量的枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com