Tôi nhìn dưới mui xe cho EnumSet.allOf
và nó trông rất hiệu quả, đặc biệt là cho enums với ít hơn 64 giá trị.Enum.values () vs EnumSet.allOf(). Cái nào thích hợp hơn?
Về cơ bản tất cả các bộ chia sẻ một mảng của tất cả các giá trị enum có thể và phần thông tin duy nhất khác là một bitmask trong trường hợp allOf
được đặt trong một swoop.
Mặt khác Enum.values () có vẻ là một chút ma thuật đen. Hơn nữa nó trả về một mảng, không phải là một bộ sưu tập, vì vậy trong nhiều trường hợp nó phải được trang trí với Arrays.asList() để có thể sử dụng được ở bất kỳ nơi nào mong đợi bộ sưu tập.
Vì vậy, nên EnumSet.allOf
thích hợp hơn là Enum.values
?
Cụ thể hơn, trong đó hình thức for
iterator nên được sử dụng:
for (final MyEnum val: MyEnum.values());
hoặc
for (final MyEnum val: EnumSet.allOf(MyEnum.class));
@ alexander-pogrebnyak, đánh dấu nó là câu trả lời – GetUsername
@GetUsername Không muốn làm điều đó mà không có phiếu bầu của ai đó: D –
Câu trả lời hay nhất +1 – PiersyP