Java:将字符串转换为枚举

环境

  1. jdk 8

示例

package jiangbo.java.lang;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public enum SeasonEnum {

    SPRING("春"),

    SUMMER("夏"),

    AUTUMN("秋"),

    WINTER("冬");

    private static final Map<String, SeasonEnum> MAP = new HashMap<>();

    static {

        for (SeasonEnum season : values()) {
            MAP.put(season.name, season);
        }
    }

    private final String name;

    private SeasonEnum(String name) {

        this.name = name;
    }

    public static SeasonEnum valueOfName(String name) {

        return MAP.get(name);
    }

    public String toLocale() {

        if (Locale.CHINA.equals(Locale.getDefault())) {
            return name;
        }
        return toString();
    }

    public static void main(String[] args) {

        // 如果转换不成功,抛出 java.lang.IllegalArgumentException
        SeasonEnum spring = SeasonEnum.valueOf("SPRING");
        System.out.println(spring);

        SeasonEnum summer = SeasonEnum.valueOfName("夏");
        System.out.println(summer);

        System.out.println(SeasonEnum.AUTUMN.toLocale());
    }
}
posted @   jiangbo4444  阅读(8338)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示