我的枚举目前是这样的:
public enum Manufacturers {
Honda,
GM,
Toyota,
Ferrari
}
Run Code Online (Sandbox Code Playgroud)
我需要创建一个Hashmap,所以我打算这样做,这是正确的吗?
Manufacturers mfg = Manufacturers.Honda;
mfg.ordinal() // save as key
Run Code Online (Sandbox Code Playgroud)
即我将使用存储密钥 enumInstance.ordinal()
此外,我需要能够解析一个字符串,该字符串将是枚举的序数值,并获得枚举:
Manufacturers mfg = Manufacturers.valueOf(mfgOrdinalValueAsString);
Run Code Online (Sandbox Code Playgroud)
上面给了我一个错误(字符串是"1").这是正确的方法吗?我想我应该有一个尝试/捕获吗?
实际上需要.valueOf字符串“GM”(代表 1)。
至于将枚举值存储在映射中,请使用EnumMap专门为此设计的 - 并且速度也会很快。
如果您确实想按序号引用一个值,请使用类似Manufacturers.values()[1].