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.

Download

Show Notes:

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

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)

Contact us: