为了账号安全,请及时绑定邮箱和手机立即绑定

在java中解析驼峰式字符串到大写枚举的任何优雅方法?

在java中解析驼峰式字符串到大写枚举的任何优雅方法?

犯罪嫌疑人X 2019-04-17 18:15:57
我需要从字符串解析枚举实例。问题是我有驼峰式的输入字符串,例如docType和常量式的枚举,例如DOC_TYPE。据我所知,java需要在枚举解析时完全匹配,所以我试图找到一种优雅的方法来解决这个问题。
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

Apache commons提供了一个方便的实用工具方法来分割camel-case字符串:Apache commons

我用它来完成你所需要的:

final String[] words = StringUtils.splitByCharacterTypeCamelCase(camelCase);final String name = String.join("_", words).toUpperCase();


查看完整回答
反对 回复 2019-05-15
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

您可以在枚举中编写一个匹配并返回枚举入口值的静态方法。

public enum SomeEnum {
    SOME_VALUE("someValue"),
    OTHER_VALUE("otherValue");

    private final String camelCaseValue;

    private static final SomeEnum[] values = values();

    SomeEnum(String camelCaseValue) {
        this.camelCaseValue = camelCaseValue;
    }

    public static SomeEnum fromCamelCase(String camelCaseValue) {
        for (SomeEnum value : values) {
            if(value.camelCaseValue.equals(camelCaseValue)) {
                return value;
            }
        }
        return SOME_VALUE;
    }}

当然,您不必将SOME_VALUE作为默认值返回。如果没有匹配,您可以返回null或抛出异常。如果映射可以动态编码(例如删除下划线然后比较不区分大小写),则甚至不需要存储camelCaseValue字段。

我只想展示一个静态方法来获取枚举条目背后的一般想法。


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 1162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号