The readResolve()
method allows final tweaks to the state of an object during deserialization. Non-final classes which implement
readResolve()
, should not set its visibility to private
since it will then be unavailable to child classes.
public class Fruit implements Serializable { private static final long serialVersionUID = 1; private Object readResolve() throws ObjectStreamException // Noncompliant {...} //... } public class Raspberry extends Fruit implements Serializable { // No access to parent's readResolve() method //... }
public class Fruit implements Serializable { private static final long serialVersionUID = 1; protected Object readResolve() throws ObjectStreamException {...} //... } public class Raspberry extends Fruit implements Serializable { //... }