Yes it is possible to have control over serialization process. The class should implement Externalizable interface. This interface contains two methods namely readExternal and writeExternal.
You should implement these methods and write the logic for customizing the serialization process.
Whenever an object is to be sent over the network, objects need to be serialized. Moreover if the state of an object is to be saved, objects need to be serilazed.
Externalizable is an interface which contains two methods readExternal and writeExternal. These methods give you a control over the serialization mechanism.
Thus if your class implements this interface, you can customize the serialization process by implementing these methods.
The serialization mechanism generates an object graph for serialization. Thus it determines whether the included object references are serializable or not. This is a recursive process.
Thus when an object is serialized, all the included objects are also serialized alongwith the original obect.
One should make sure that all the included objects are also serializable. If any of the objects is not serializable then it throws a NotSerializableException.