Một đơn giản Enum
là danh sách các giá trị mà bạn chỉ có thể chọn một từ một thời điểm. Sử dụng ví dụ của bạn, một kích thước có thể chỉ là một trong S, M, L, vv cho bất kỳ loại vải cụ thể nào. Bạn có thể sử dụng hằng số đơn giản thay vì Enum
nhưng điều này có lợi thế về khả năng đọc, bảo trì dễ dàng hơn và kiểm tra loại nghiêm ngặt.
An EnumSet
sẽ được sử dụng khi bạn cần biến để giả định nhiều hơn một giá trị Enum
cùng một lúc. Ví dụ: phông chữ bạn viết trên màn hình có thể là cả hai hình ảnh đậm và in nghiêng cùng một lúc. An EnumSet
sẽ cho phép bạn thêm các giá trị khác nhau và để kiểm tra xem một trong các giá trị đó có thực sự được đặt ở bất kỳ thời điểm đã định nào không. Nếu bạn đã đến Java từ các ngôn ngữ lập trình khác, đây là chức năng thường được gọi là cờ.
So sánh hai:
enum Size { S, M, L, XL, XXL, XXXL }
Size currentSize;
...
currentSize = Size.S;
...
if (currentSize == Size.S) ...
định nghĩa, chuyển nhượng và sau đó kiểm tra cho một giá trị duy nhất Enum
.
enum FontStyle { Bold, Italic, Underline, Strikethrough }
EnumSet<FontStyle> currentStyle;
...
currentStyle = EnumSet.of(FontStyle.Bold, FontStyle.Italic);
...
if (currentStyle.contains(FontStyle.Italic)) ...
xác định, chỉ định hai giá trị Enum
cùng một lúc, sau đó kiểm tra xem một trong số đó có thực sự được đặt hay không.
Nguồn
2016-01-03 12:57:16
Vậy đó là loại Enum trong Enum? có nghĩa là một đối tượng khác (largeSizes) đại diện cho một phần của một đối tượng (Kích thước)? – Adam
Không, đó là một tập hợp các giá trị enum. 'largeSizes' là tập hợp chứa XL, XXL và XXXL. Bạn có thể thay thế nó bằng một HashSet, và nó sẽ không thay đổi bất cứ điều gì ngoại trừ hiệu suất và mức tiêu thụ bộ nhớ. 'Kích thước' không phải là một đối tượng. Đó là một lớp học. Và lớp này định nghĩa một số hằng số: L, XL, XXL, vv của loại 'Kích thước'. –
Tôi đã không hiểu rõ nó ... nếu Kích thước (nên kích thước) là một đối tượng tại sao nó không giống như: Enum Sizes = new Enum; ? và sau đó 3 dòng cuối cùng trong mã đầu tiên? Nếu tôi có thể tạo một đối tượng kích thước 'Kích thước', nghĩa là Kích thước phải là một Lớp .... – Adam