018: Effective Java for Android developers : Item 3
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
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)
Contact us: