Tôi có một enum tĩnh như thế này:biểu Java8 Lambda để lặp qua các giá trị enum và khởi tạo thành viên chính thức
private static enum standardAttributes {
id, gender, firstname, lastname, mail, mobile
}
tôi cần tất cả các giá trị như String. Do đó, tôi có một phương pháp như sau:
public static List<String> getStandardRecipientsAttributes() {
List<String> standardAttributesList = new ArrayList<String>();
for (standardAttributes s : standardAttributes.values())
standardAttributesList.add(s.toString());
return standardAttributesList;
}
Không cần phải tạo cùng Danh sách mọi phương pháp này được gọi. Vì vậy, tôi đã tạo một thành viên tĩnh:
static final List<String> standardAttributesList;
static {
standardAttributesList = getStandardRecipientsAttributes();
}
Điều này là tốt, nhưng tôi tự hỏi nếu có một biểu thức Lambda ưa thích để thay thế phương pháp. Một cái gì đó như thế này:
Arrays.asList(standardAttributes.values()).forEach((attribute) -> standardAttributesList.add(attribute.toString()));
Hai câu hỏi:
- Tôi có thể tránh được những wrapper Arrays.asList?
- Làm cách nào để xử lý lỗi trình biên dịch: Chuẩn trường trống cuối cùngAttributesList có thể chưa được khởi tạo?
Chỉ cần tự hỏi: nó sẽ không có ý nghĩa để có một chức năng thành viên trong enum của bạn mà thực hiện điều này cho bạn? Nếu lý do duy nhất để có enum này là để thu thập một danh sách các giá trị enum tiềm năng và xây dựng một chuỗi đại diện của điều đó - tại sao bạn bên ngoài phần thứ hai? – GhostCat
Điểm tốt. Tôi đoán tôi đổ lỗi cho mã di sản cũ và ý chí còn thiếu cho những thứ tái cấu trúc :) –