I saw this reply from Jon on Initialize generic object with unknown type:
If you want a single collection to contain multiple unrelated types of v
List<> is a typesafe version of ArrayList. It will guarantee that you will get the same object type in the collection.