List<T>、List<?>、List<Object> 这三者都是可以容纳所有对象,但使用顺序应该是先选 List<T>,次之List<?>,最后选择 List<Object>。
List<T> 是某个确定的类型,表示集合 List 的元素类型是T类型,具体类型在运行期内确定,可以进行诸如 add、remove 等操作。
List<?> 表示任意类型,不能进行增加、修改操作,因为编译器不知道 List 中容纳的是什么类型的元素,也无法校验类型是否安全,List<?> 读取的元素都是 Object 元素需要主动转型,所以经常用于泛型方法的返回值,它可以执行 remove、clear 等删除方法。
List<Object> 表示 List 集合中所有元素为 Object 类型,即也和前者一样都是可以容纳所有类型。可以进行读写操作,但是执行写入操作时需要向上转型,在读取数据后需要向下转型。