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