【发布时间】:2014-04-04 09:03:50
【问题描述】:
考虑下面的方法doSomething(List<Object>),它接受List<Object>作为参数。
private void doSomething(List<Object> list) {
// do something
}
现在考虑下面的代码 sn-p 尝试调用 doSomething() 我尝试将 List<String> 传递给 doSomething()
List<Object> objectList;
List<String> stringList;
doSomething(stringList); // compilation error incompatible types
doSomething(objectList); // works fine
即使下面的代码也会抛出编译错误
objectList = stringList; // compilation error incompatible types
我的问题是为什么不能将List<String> 传递给接受List<Object> 的方法?
【问题讨论】:
-
List<? extends Object>应该允许它工作 -
@AbstractChaos true,只要“做某事”不涉及
List#add(...)