You can pass explicit implementations because they implement Serializable, but their abstract and interfaces do not.
The list and other collections are not Serializable, because this is not their definition. They offer a choice for their implementation, since you also have list implementations that are not Serializable.
This is important to have, as you can save data that is not saved for serialization in a list. In these cases, you can choose the implementations that are the best choice for this data, instead of forcing the "List" to be serialized.
source
share