我需要从字符串解析枚举实例。问题是我有驼峰式的输入字符串,例如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();

幕布斯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字段。
我只想展示一个静态方法来获取枚举条目背后的一般想法。
添加回答
举报
0/150
提交
取消