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

如何获取排除指定元素的Java枚举值数组?

解决枚举Stream过滤后转指定类型数组的问题

嘿,这个问题我之前踩过坑!你的过滤逻辑完全没问题,问题出在toArray()的调用方式上——默认的无参toArray()返回的是Object[]类型,没法直接赋值给Actions[]变量。

你只需要改用toArray()的重载版本,传入一个数组生成器就能搞定,单行代码就能实现:

Actions[] noF = Arrays.stream(Actions.values()).filter(value -> value != Actions.f).toArray(Actions[]::new);

为什么这样能行?

toArray(IntFunction<A[]> generator)这个重载方法会根据Stream里的元素数量,调用你传入的生成器(这里用方法引用Actions[]::new等价于size -> new Actions[size])创建对应长度的Actions[]数组,然后把过滤后的元素填充进去,完美匹配你需要的类型。

如果用默认的无参toArray(),Java没法推断出你想要的数组类型,只能返回最通用的Object[],这就是你之前代码报错的原因啦。

内容的提问来源于stack exchange,提问作者Steve W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:17:49