У меня есть статическое перечисление вроде этого:
private static enum standardAttributes {
id, gender, firstname, lastname, mail, mobile
}
Мне нужны все значения как String. Поэтому у меня есть такой способ:
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?
- Как я могу обработать ошибку компилятора: Пустое конечное поле standardAttributesList, возможно, не было инициализировано?