我需要從字符串解析枚舉實例。問題是我有駝峰式的輸入字符串,例如docType和常量式的枚舉,例如DOC_TYPE。據(jù)我所知,java需要在枚舉解析時完全匹配,所以我試圖找到一種優(yōu)雅的方法來解決這個問題。
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個贊
您可以在枚舉中編寫一個匹配并返回枚舉入口值的靜態(tài)方法。
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或拋出異常。如果映射可以動態(tài)編碼(例如刪除下劃線然后比較不區(qū)分大小寫),則甚至不需要存儲camelCaseValue字段。
我只想展示一個靜態(tài)方法來獲取枚舉條目背后的一般想法。
添加回答
舉報
0/150
提交
取消