Ваш вопрос, кажется, основан на недоразумении.Чтобы сериализовать объект, объект (или его класс) должен реализовать Serializable
, но вам не нужно использовать выражение типа Serializable
(или некоторый подтип) для этого.Совершенно преднамеренно, что метод writeObject
имеет тип параметра Object
, а не Serializable
, а также тип возврата readObject()
.
Но даже если эти параметры и возвращаемые типы былиSerializable
, вам не нужно знать конкретные типы реализации:
ObjectOutputStream stream = ...;
List myList = ...;
stream.writeObject((Serializable)myList);
и
ObjectInputStream stream = ...;
List myList = (List) stream.readObject();
будут работать так же, как и сейчас (без использования Serializable).
ObjectInputStream и ObjectOutputStream вообще не заботятся о ваших типах при вызове, они просто смотрят на объект и его класс.