猿问

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

我需要从字符串解析枚举实例。问题是我有驼峰式的输入字符串,例如docType和常量式的枚举,例如DOC_TYPE

据我所知,java需要在枚举解析时完全匹配,所以我试图找到一种优雅的方法来解决这个问题。


犯罪嫌疑人X
浏览 1163回答 2
2回答

喵喔喔

Apache commons提供了一个方便的实用工具方法来分割camel-case字符串:Apache commons我用它来完成你所需要的:final String[] words = StringUtils.splitByCharacterTypeCamelCase(camelCase);final String name = String.join("_", words).toUpperCase();

幕布斯7119047

您可以在枚举中编写一个匹配并返回枚举入口值的静态方法。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字段。我只想展示一个静态方法来获取枚举条目背后的一般想法。
随时随地看视频慕课网APP

相关分类

Java
我要回答