爲什麼它 與簽名的方法:調用使用返回通用列表的方法的類型列表的列表?
public void foo(List<String> string)
不能由芭樂被稱爲:foo(Lists.newArrayList())
或java7s:foo(new ArrayList<>())
爲什麼它 與簽名的方法:調用使用返回通用列表的方法的類型列表的列表?
public void foo(List<String> string)
不能由芭樂被稱爲:foo(Lists.newArrayList())
或java7s:foo(new ArrayList<>())
編譯器不能夠正確推斷什麼類型的Lists.newArrayList()
應該返回。你可以告訴編譯器你想要什麼類型
foo(Lists.<String>newArrayList());
爲什麼不能編譯器推斷這個類型?考慮這些方法
<T> T newObject();
void bar(Integer i);
void bar(String s);
如果你有bar(newObject())
,那麼編譯器無法確定應該調用哪個方法。編譯器在查找要調用的方法之前需要知道參數的類型,即使當前只有一種可能的方法。否則,一個新的重載方法會破壞你的代碼。
因爲ArrayList的實現接口列表
也許我的問題應該是,爲什麼它不能推斷出類型。 – 2012-03-01 09:17:04
只需添加更多內容。 – 2012-03-01 16:59:07
啊,這很有道理,謝謝 – 2012-03-01 21:45:11