我有一个静态枚举,类似这样:
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()));
有两个问题:
- 我能避免使用Arrays.asList包装器吗?
- 如何处理编译器错误:可能未初始化空白的final字段standardAttributesList?