shrini1000
shrini1000

Reputation: 7226

Java lazy loading of enum instances

If I have a bunch of enum instances in an enum type, and if I access an instance of it the first time, all of its remaining instances too are initialized at the same time. Is there any way to initialize an enum instance only when it's accessed the first time?

Upvotes: 6

Views: 4729

Answers (2)

Peter Lawrey
Peter Lawrey

Reputation: 533520

You can make the instances lazy loading on use. i.e. the constructor doesn't actually perform the expensive work. In the methods for these enums, you add a checkingLoaded() method to the methods which need this. This doesn't have to be every method depending on what it does.

Upvotes: 4

T.J. Crowder
T.J. Crowder

Reputation: 1074335

Not without basically making it not an enum anymore. Enums are classes. The first time a class is used, it gets loaded by the JVM and all of its static initialization is done. Setting up the enum members is a static initialization, so they're all going to be initialized.

Upvotes: 11

Related Questions