考慮以下方法doSomething(List<Object>)
,它接受List<Object>
作爲參數。爲什麼列表<String>不被接受爲列表<Object>?
private void doSomething(List<Object> list) {
// do something
}
現在考慮下面這些試圖調用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>
的方法?
看看這個:http://docs.oracle.com/javase/tutorial/extra/generics/subtype.html –
'名單<?擴展Object>'應該允許它工作 – AbstractChaos
@AbstractChaos true,只要「做某事」不涉及「List#add(...)' – Marco13