Java ленивая загрузка экземпляров enum - PullRequest
5 голосов
/ 23 февраля 2012

Если у меня есть несколько экземпляров перечисления в типе перечисления, и если я обращаюсь к его экземпляру в первый раз, все остальные оставшиеся экземпляры тоже инициализируются одновременно. Есть ли способ инициализировать экземпляр enum только при первом обращении к нему?

Ответы [ 2 ]

9 голосов
/ 23 февраля 2012

Не без того, чтобы больше не делать это enum. Перечисления являются классами .При первом использовании класса он загружается JVM, и вся его статическая инициализация выполняется.Настройка элементов enum является статической инициализацией, поэтому все они будут инициализированы.

4 голосов
/ 23 февраля 2012

Вы можете сделать экземпляры ленивой загрузки при использовании.т.е. конструктор на самом деле не выполняет дорогостоящую работу.В методах для этих перечислений вы добавляете метод checkLoaded () в методы, которым это необходимо.Это не должен быть каждый метод в зависимости от того, что он делает.

...