In a world before Java 1.5 (so no enum
) and with my object being serialized, how can I enforce proper instance control? I\'m talking about a class like this, w
You should really check out Effective Java. The chapter on Singleton addresses this somewhat, and there is a chapter on the Typesafe Enum pattern that was definitely an influence on the way enum
was implemented.
The short answer is you have to implement readResolve
.
If I understand you correctly then what you are looking for is to take Joshua Bloch' advice and implement the readResolve method to return one of your constant instances.
private Object readResolve() throws ObjectStreamException {
return PRIVATE_VALUES[ordinal]; // The list holding all the constant instances
}