给出以下java枚举:
public enum AgeRange { A18TO23 { public String toString() { return "18 - 23"; } }, A24TO29 { public String toString() { return "24 - 29"; } }, A30TO35 { public String toString() { return "30 - 35"; } }, }
有没有办法将字符串值"18 - 23"转换为相应的枚举值,即AgeRange.A18TO23?
谢谢!
最好和最简单的方法是这样的:
public enum AgeRange { A18TO23 ("18-23"), A24TO29 ("24-29"), A30TO35("30-35"); private String value; AgeRange(String value){ this.value = value; } public String toString(){ return value; } public static AgeRange getByValue(String value){ for (final AgeRange element : EnumSet.allOf(AgeRange.class)) { if (element.toString().equals(value)) { return element; } } return null; } }
然后你只需要调用getByValue()
带有String
输入的方法.
您总是可以创建从字符串到值的映射 - 静态地这样做,因此您只需映射一次,假设返回的字符串随时间保持不变.据我所知,没有任何内置内置功能.