Getting Enum Object from its value in Java. In Efficient way and Not using Map
本问题已经有最佳答案,请猛点这里访问。
在
1 2 3 4 | public enum Example { Object1("val1","val2"), Object2("val3","val4"); } |
我随身带着埃多克斯一号[二号]。我可以让
如果可以确保每个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public enum Example { Object1("val1","val2"), Object2("val3","val4"); private static final class ExampleValManager { static final Map<String, Example> EXAMPLE_VAL_MANAGER_MAP = new HashMap<>(); } private String val1; private String val2; private Example(String val1, String val2) { this.val1 = val1; this.val2 = val2; ExampleValManager.EXAMPLE_VAL_MANAGER_MAP.put(val1, this); } public static Example getExampleByVal1(String val) { return ExampleValManager.EXAMPLE_VAL_MANAGER_MAP.get(val); } } |
使用方法如下:
1 2 3 4 5 6 |
产量
1 | Object1 |
您的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
您可以通过字符串值获取枚举,然后如下所示:
1 | Example.getNameByStr1("val1"); |
实际上,您没有显示这些字符串对应的任何内容,因此我假设您有名为
1 2 3 4 5 6 7 8 9 |
为了通过
1 2 3 4 5 6 7 8 | public static Example ofFoo(String foo) { for(Example e : Example.values()) { if(e.foo.equals(foo)) return e; } return null; } |
只要你没有一个疯狂的枚举值,这通常是好的。如果性能实际上是一个问题,您可以在私有静态数组中缓存