java在通配符泛型类型和泛型类型之间未经检查的强制转换
请帮助我理解为什么不选中此演员阵容:
List<? extends String> t= ...;
List<String> t2=(List<String>)t;
应该是完全安全的。。。 我想这可能已经被问过了,但我找不到。。。关于泛型的问题太多了!我经常使用泛型,但这种怀疑一直存在。。。提前谢谢你
编辑: 如前所述,我应该使用非期末课程。 所以:
List<? extends ConfigurationAdapter> t= new ArrayList<DATASOURCE_ConfigurationAdapter>();
List<ConfigurationAdapter> t2=(List<ConfigurationAdapter>)t;
这很管用。我不明白为什么没有检查
# 1 楼答案
对于
String
它是完全安全的,您可以忽略警告。对于类型为final class
类型的任何类型绑定也是如此对于任何其他类型,分配给
t
的值的类型可能是List<SubtypeOfTheBound>
。在这种情况下,无法将其分配给List<Bound>
更多阅读: