因为与此处无关的不是运行时类型。
list仍然是类型
List<? extends String>,您刚巧将其分配给
newArrayList<String>()。考虑一下:
list = rand() ? new ArrayList<String>() : new ArrayList<NotString>();
编译器无法确定其是否
list.add("test")有效-它仅基于的编译时类型进行决策list。
请注意,实际上没有任何扩展
String,这是一个
final类。

因为与此处无关的不是运行时类型。
list仍然是类型
List<? extends String>,您刚巧将其分配给
newArrayList<String>()。考虑一下:
list = rand() ? new ArrayList<String>() : new ArrayList<NotString>();
编译器无法确定其是否
list.add("test")有效-它仅基于的编译时类型进行决策list。
请注意,实际上没有任何扩展
String,这是一个
final类。
上一篇 Firestore快照侦听器的生命周期与定价之间有什么关系?
下一篇 MongoDB + Azure + Android:com.mongodb.WriteConcernException err:“非主用户”代码:“10058”