私はこのような静的な列挙型を持っています:
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()));
2つの質問:
できるよ
_static final List<String> standardAttributesList =
Stream.of(values())
.map(Enum::name)
.collect(Collectors.toList());
_
これにより、値の配列からストリームが作成され、.name()
メソッドがそれぞれに適用され、最後にすべての結果がリストに収集されます。