The book Effective Java and other sources provide a pretty good explanation on how and when to use the readObject() method when working with serializable Java class
readResolve() will ensure the singleton contract while serialization. Please refer