Enum.values() vs EnumSet.allOf( ). Which one is more preferable? Enum.values() 和 EnumSet.allOf( ),哪一个更可取?

18 浏览
0 Comments

Enum.values() vs EnumSet.allOf( ). Which one is more preferable? Enum.values() 和 EnumSet.allOf( ),哪一个更可取?

我查看了EnumSet.allOf的源代码,它看起来非常高效,尤其对于不超过64个值的枚举类型。

基本上,所有的集合共享一个包含所有可能枚举值的数组,唯一的其他信息是一个位掩码,在allOf的情况下可以一次性设置。

另一方面,Enum.values()似乎有点像黑魔法。此外,它返回的是一个数组而不是集合,所以在许多情况下必须用Arrays.asList()装饰才能在任何期望集合的地方使用。

那么,EnumSet.allOf是否更可取还是Enum.values

更具体地说,应该使用哪种形式的for循环迭代器:

for ( final MyEnum val: MyEnum.values( ) );

还是

for ( final MyEnum val: EnumSet.allOf( MyEnum.class ) );

0