Serialization can be used to transfer objects to other applications. It's possible that the serialized class is not present in the application that reads the object. Since the ObjectOutputStream only stores the contents of the fields and not the code, the reading applications needs to have the actual code for the written classes. If it is not present, a ClassNotFoundException is thrown.
As for the unchecked type: Try reading it into an Object instance first and then use the "instanceof" operator to check if it is actually of type MyList. See also here for the generic part: How to avoid unchecked cast warnings with Java Generics