Java中如何获取首字母大写其余小写格式的枚举值
Java枚举值转首字母大写格式实现方案
Java枚举默认通过name()方法返回的是枚举定义时写的全大写字符串,要拿到「首字母大写、其余字母小写」的结果,有两种常用实现方式:
方案1:枚举内部封装格式化方法(推荐)
直接在枚举类里新增自定义方法,逻辑内聚,调用最方便,示例代码如下:
public enum Color { RED, YELLOW, BLACK; // 返回首字母大写、其余小写的格式化枚举名 public String getFormattedName() { // 先把原始枚举名全转小写 String lowerCaseName = name().toLowerCase(); // 首字母转大写后拼接剩余小写部分 return lowerCaseName.substring(0, 1).toUpperCase() + lowerCaseName.substring(1); } }
调用方式:
Color.RED.getFormattedName()返回RedColor.YELLOW.getFormattedName()返回YellowColor.BLACK.getFormattedName()返回Black
注意:获取枚举原始名称请务必用name()方法,不要依赖toString(),toString()可被重写,返回值没有稳定性保证。
方案2:通用工具类(无法修改枚举源码时使用)
如果不能改动原有枚举类的代码,可以写一个通用的静态工具方法,适配所有枚举类型:
public class EnumUtils { public static <T extends Enum<T>> String formatToFirstUpper(Enum<T> enumInstance) { if (enumInstance == null) { return ""; } String lowerName = enumInstance.name().toLowerCase(); return Character.toUpperCase(lowerName.charAt(0)) + lowerName.substring(1); } }
调用方式:EnumUtils.formatToFirstUpper(Color.BLACK) 即可返回 Black。
多单词枚举值的扩展处理
如果你的枚举成员是下划线分隔的多单词格式(比如DARK_GREEN),可以扩展格式化逻辑,实现每个单词首字母大写,示例:
public String getCamelCaseName() { String[] wordParts = name().toLowerCase().split("_"); StringBuilder result = new StringBuilder(); for (String part : wordParts) { result.append(part.substring(0, 1).toUpperCase()) .append(part.substring(1)); } return result.toString(); }
该方法处理DARK_GREEN时会返回DarkGreen,如果需要单词间加空格,在拼接时插入空格即可。
内容的提问来源于stack exchange,提问作者Teletubbies
相关产品推荐
相关产品推荐

