Actually I don't...
You can disable the default serialization of a field, either by making it transient or by explicitly specifying the
ObjectStreamFields, but both will not restore it when deserializing. Since the field is final that means it will remain null indefinitely.
Perhaps you can get some results using writeReplace and readResolve as Campbell suggested; I haven't got much experience in these except for using the latter for maintaining Singleton instances properly for Serializable classes. Or perhaps it's even easier using readObject and writeObject; if you simply do not call stream.defaultReadObject and stream.defaultWriteObject it will not use the default serialization mechanism but your custom serialization instead. However, the final member will not be deserialized and will remain null...
Frankly, final fields and custom serialization are often a pain to combine, and often you need to drop one of the two.
However, Pat, you do realize that objects will not be serialized more than once, even if more references to it are serialized? The serialization mechanism will detect the object has been serialized already, and will store a reference to that serialized object instead of the object itself.