Как стать автором
Обновить

Комментарии 7

Можно построить валидный enum из 21200 констант, причём средствами чистой Java 5, безо всяких Unsafe и ConstantDynamic. Пруф.

Довольно интересная задача. Когда вы в прошлой части упомянули теоретический максимум в ~21K элементов, я ожидал в этой части увидеть, как вы его будете достигать ¯\_(ツ)_/¯

Трюк с инициализацией через конечный автомат — красиво, снимаю шляпу!
Слегка доработав можно даже не автогенерированные "C" + index, а произвольные имена элементам перечисления дать, по аналогии с Unsafe вариантом.

Ещё пара трюков, и вот уже 21391 константа: LargeEnum.class. Можно ли больше?
21455 получил. Пожалуй, на этом пора остановиться.
Обработку следующих 60 000 значений можно вынести в следующий метод?

Перечисление с более, чем примерно 65 000 элементов создать не получится, подробнее про это было в первой части.


Разбить один switch () на несколько в разных методах и обрабатывать отдельные поддиапазоны значений можно, но тут понадобится доработка компилятора. Сейчас инициализация вспомогательного массива для switch сделана не самым оптимальным образом, см. главу «Javac и switch».

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории