gpt4 book ai didi

Java8 Lambda 表达式迭代枚举值并初始化最终成员

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:32 27 4
gpt4 key购买 nike

我有一个像这样的静态枚举:

private static enum standardAttributes {
id, gender, firstname, lastname, mail, mobile
}

我需要所有值作为字符串。因此我有这样的方法:

public static List<String> getStandardRecipientsAttributes() {
List<String> standardAttributesList = new ArrayList<String>();
for (standardAttributes s : standardAttributes.values())
standardAttributesList.add(s.toString());

return standardAttributesList;
}

无需在每次调用此方法时都创建相同的列表。所以我创建了一个静态成员:

static final List<String> standardAttributesList;
static {
standardAttributesList = getStandardRecipientsAttributes();
}

这一切都很好,但我想知道是否有一个花哨的 Lambda 表达式来替换该方法。像这样:

Arrays.asList(standardAttributes.values()).forEach((attribute) -> standardAttributesList.add(attribute.toString()));

两个问题:

  1. 我可以避免使用 Arrays.asList 包装器吗?
  2. 我该如何处理编译器错误:空白的最终字段 standardAttributesList 可能尚未初始化

最佳答案

你可以做到

static final List<String> standardAttributesList = 
Stream.of(values())
.map(Enum::name)
.collect(Collectors.toList());

这将从值数组创建一个流,对每个值应用 .name() 方法,最后将所有结果收集到一个列表中。

关于Java8 Lambda 表达式迭代枚举值并初始化最终成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com