Enum.values() vs EnumSet.allOf( ). Which one is more preferable? Enum.values() 和 EnumSet.allOf( ),哪一个更可取?
- 论坛
- Enum.values() vs EnumSet.allOf( ). Which one is more preferable? Enum.values() 和 EnumSet.allOf( ),哪一个更可取?
18 浏览
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 ) );