private static enum standardAttributes {
id, gender, firstname, lastname, mail, mobile
}
我需要的所有值作为字符串。因此,我有这样的方法:
public static List getStandardRecipientsAttributes() {
List standardAttributesList = new ArrayList();
for (standardAttributes s : standardAttributes.values())
standardAttributesList.add(s.toString());
return standardAttributesList;
}
每次调用此方法都不需要创建相同的List。所以我创建了一个静态成员:
static final List standardAttributesList;
static {
standardAttributesList = getStandardRecipientsAttributes();
}
这很好,但我不知道是否有一个花哨的Lambda表达式来替换该方法。事情是这样的:
Arrays.asList(standardAttributes.values()).forEach((attribute) -> standardAttributesList.add(attribute.toString()));
两个问题:
我能避免Arrays.asList包装?
如何处理编译器错误:空白最终字段standardAttributesList可能尚未初始化?
+0
只是想知道:在你的枚举中有一个成员函数是否有意义为你做到这一点?如果拥有这个枚举的唯一原因是收集一个可能的枚举值列表并为其建立一个字符串表示 - 为什么要将第二部分外化? –
2015-03-25 09:40:45
+0
好点。我想我把责任归咎于旧的遗留代码和遗漏的重构东西:) –
2015-03-25 09:58:17