Effective Java (2nd Edition)

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 * Effective Java (2nd Edition) - Joshua Bloch

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

Approaches

  1. Create a public static final INSTANCE variable and privatize constructor
  2. Same as 1 but privatize variable and expose access with provide factory method getInstance
  3. 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 base Application class
  • DH again saying Application is a Singleton with crappier semantics
  • Elvis sightings

Contact us: * @fragmentedcast [twitter.com] * @donnfelker [twitter.com] * @kaushikgopal [twitter.com]