You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需循环且不修改枚举设计,如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:11:06