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