当前位置:  开发笔记 > 编程语言 > 正文

如何将带有重写的toString()的枚举的字符串结果转换回枚举?

如何解决《如何将带有重写的toString()的枚举的字符串结果转换回枚举?》经验,为你挑选了2个好方法。

给出以下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?

谢谢!



1> sakana..:

最好和最简单的方法是这样的:

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输入的方法.


它不应该是静态的吗?

2> Jon Skeet..:

您总是可以创建从字符串到值的映射 - 静态地这样做,因此您只需映射一次,假设返回的字符串随时间保持不变.据我所知,没有任何内置内置功能.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有