无需循环且不修改枚举设计,如何获取Java枚举值的字符串数组?
解决枚举值字符串数组的生成问题
我来帮你搞定这个需求!既然不能修改现有枚举类,又不想用显式循环来逐个转换,Java 8+的Stream API刚好能完美解决这个问题,完全符合你的要求。
可行方案代码
直接用Stream来处理枚举数组,通过映射提取每个枚举实例的value()返回值,最后转换成字符串数组:
import java.util.Arrays; // 生成目标字符串数组并传递给getMethod String[] enumValuesArray = Arrays.stream(enum1.values()) .map(enum1::value) .toArray(String[]::new); getMethod(enumValuesArray);
代码解释
enum1.values():获取该枚举类的所有实例组成的数组,这是Java枚举自带的方法,不需要额外工具类。.map(enum1::value):通过方法引用,把每个枚举实例映射为它的value()方法返回的字符串值(也就是你需要的"12345"、"Custname")。.toArray(String[]::new):将Stream处理后的结果转换成String类型的数组,满足getMethod的参数要求。
为什么你之前试的方法不行?
你提到的EnumUtils.getEnumMap、EnumUtils.getEnumList以及直接用enum1.values(),返回的都是枚举实例本身的集合/数组,而不是实例对应的value()字符串值,所以自然得不到你想要的结果。而Stream的map操作刚好帮你完成了从枚举实例到目标字符串的转换,而且没有显式的循环代码。
内容的提问来源于stack exchange,提问作者Prithi
相关产品推荐
相关产品推荐

