I understand that deserialization creates another instance of Singleton. But Why ? does it call private constructor internally ? On what instance does readResolve method is invoked, if the deserialized instance is a different instance altogether ?
Edit: This question is regarding traditional singleton which is not enum. The existing answer suggested is not same as it does not explain how readResolve is called internally. Hence, this question should not be marked as duplicate.