获取所有枚举值到列表

Sim*_*_me 10 java enums java-8 java-stream

我正在尝试并且失败,检索所有枚举值并使用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; }

   }
}
Run Code Online (Sandbox Code Playgroud)

输出:

[APPLE, BANANA]
[[LMain$FruitsEnum;@41629346]
Run Code Online (Sandbox Code Playgroud)

期望:

["AAPL", "BNN"]
Run Code Online (Sandbox Code Playgroud)

Nam*_*man 7

你需要mapgetValue

List<String> fruits = Stream.of(FruitsEnum.values())
                            .map(FruitsEnum::getValue) // map using 'getValue'
                            .collect(Collectors.toList());
System.out.println(fruits);
Run Code Online (Sandbox Code Playgroud)

这会给你输出

[APPL, BNN]
Run Code Online (Sandbox Code Playgroud)


ETO*_*ETO 5

这应该做的伎俩:

Arrays.stream(FruitsEnum.values())
      .map(FruitsEnum::getValue)
      .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)