018 – Effective Java for Android developers : Item 3

018 – Effective Java for Android developers : Item 3

Avatar

In this mini Fragment, we introduce Joshua's third Item: Enforce the Singleton property with a private constructor or an enum type.
Stay tuned for more items from our "Effective Java for Android developers" Fragment series.
Show notes for this episode:

Effective Java (2nd Edition) - Joshua Bloch

Enforce the Singleton property with a private constructor or an enum type
Approaches

Create a public static final INSTANCE variable and privatize constructor
Same as 1 but privatize variable and expose access with provide factory method getInstance
Single element Enums

Considerations

First two approaches are open to Serialization attacks (deserializing creates new instance)
To protect from those declare the fields transient + provide readResolve method
Enums are concise, provide free serialization and ironclad Singleton guarantees and are functionally equivalent to first approach

Supplemental reading (for the diligent ones that follow shownotes)

Dianne Hackborn regretting exposing the ba

Comments

Avatar