项目中需要用一个List
接多种List<T>
。
这样写List<Object> list = getType1List();
编译不通过,提示获取的类型与指定的类型不匹配。
但是换成List list = getType1List();
就能编译通过了。这是为什么呢?
List<Object>
不行因为 List<T>
对T是不变 (协变/逆变/不变的不变)的
List
(没有<>
)是个raw type, 允许更类型不安全的写法, 不建议在现代代码中使用
建议引入类型变量来解决, 或者用List<?> list
getType1List()这个方法的返回值没有带泛型
getType1List()返回类型是什么?