【发布时间】:2019-01-05 16:54:12
【问题描述】:
我正在尝试检索所有 Enum 值并使用 Java 8 和流将它们放在一个列表中,但失败了。到目前为止,我已经尝试了以下两种方法,但都没有返回值。
我做错了什么?
代码:
public class Main {
public static void main(String[] args) {
List<String> fruits1 = Stream.of(FruitsEnum.values())
.map(FruitsEnum::name)
.collect(Collectors.toList());
List<String> fruits2 = Stream.of(FruitsEnum.values().toString())
.collect(Collectors.toList());
// attempt 1
System.out.println(fruits1);
// attempt 2
System.out.println(fruits2);
}
enum FruitsEnum {
APPLE("APPL"),
BANANA("BNN");
private String fruit;
FruitsEnum(String fruit) {this.fruit = fruit;}
String getValue() { return fruit; }
}
}
输出:
[APPLE, BANANA]
[[LMain$FruitsEnum;@41629346]
期望:
["AAPL", "BNN"]
【问题讨论】:
-
@Aomine,这不是重复的,因为该问题中标记的解决方案在这里不起作用。事实上,我已经将它合并到我的 sn-p (
fruits1) 中。 -
如果您可以更具体一些并显示您当前获得的结果以及您期望的结果,我会考虑重新打开。
-
您希望
FruitsEnum.values().toString()做什么?实际上,它会将值数组转换为字符串,而不是您可能期望的字符串数组。 -
我添加了想要的输出;是的@ETO 好点。
-
使用 Stream.of(FruitsEnum.values()).map(FruitsEnum::getValue).collect(Collectors.toList());
标签: java enums java-8 java-stream