我有一个枚举

public enum UnitSystem {
    ImperialSystem("Imperial", "in.", 1),
    MetricSystem("Metric", "cm.", 2.54);
    private String unitSystemName;
    private String lengthSuffix;
    private double lengthCoeff;


我正在尝试获取String[] l,该{"Imperial", "Metric"};将具有unitSystemName,该数组是包含每个系统的的数组。现在,我最好的选择是:

String[] l = Arrays.stream(UnitSystem.values()).map(UnitSystem::name).collect(Collectors.toList()).toArray(new String[UnitSystem.values().length]);


有没有更好的方法来实现它?

最佳答案

您必须遍历某个枚举值并从中提取名称,就像在加尔文的答案建议中那样在枚举代码内还是像您一样在其外部。没有办法(至少没有我能想到的)解决这个问题。

不过,您的代码可能会被清除。没有理由将流收集到列表然后将其转换为数组-您可以将其直接转换为数组:

String[] l =
Arrays.stream(UnitSystem.values()).map(UnitSystem::name).toArray(String[]::new);

09-15 22:14