EnumSet
фактически имеет две реализации - одна для перечислений с 64 или менее элементами (флаги, указывающие на наличие значений в наборе, хранятся как long
), а другая для других перечислений (флаги хранятся как long[]
). , Методы фабрики EnumSet
возвращают один из них в зависимости от переданного класса перечисления.
Такая оптимизация не имеет смысла для EnumMap
(поскольку массив для хранения значений необходим в любом случае), поэтому EnumMap
- это конкретный класс.