You can't serialise a class that doesn't implement Serializable
, but you can wrap it in a class that does. To do this, you should implement readObject
and writeObject
on your wrapper class so you can serialise its objects in a custom way.
- First, make your non-serialisable field
transient
.
- In
writeObject
, first call defaultWriteObject
on the stream to store all the non-transient fields, then call other methods to serialise the individual properties of your non-serialisable object.
- In
readObject
, first call defaultReadObject
on the stream to read back all the non-transient fields, then call other methods (corresponding to the ones you added to writeObject
) to deserialise your non-serialisable object.
I hope this makes sense. :-)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…