Enum.values() против EnumSet.allOf(). Какой из них предпочтительнее?JAVA

Программисты JAVA общаются здесь
Anonymous
Enum.values() против EnumSet.allOf(). Какой из них предпочтительнее?

Сообщение Anonymous »

Я заглянул под капот 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 ) );


Подробнее здесь: https://stackoverflow.com/questions/246 ... preferable

Вернуться в «JAVA»