You can probably still serialize it, but you need to use some more advanced techniques like a serialization proxy
. In short, instead of serializing instances of your Sequencer sub class, you serialize a replacement (writeReplace
). In turn, this replacement will return a newly created instance of your sub class when it's deserialized (readResolve
). This way you can call any constructor you want, as long as you have its values.