當在相同的類我有兩個重載方法:編譯錯誤曖昧參考方法使用類型集合
public static <T> void foo(Collection<T> collection, T valueToAppend);
public static <T> void foo(Collection<T> collection, Collection<T> valueToAppend);
以下測試應該調用第二種方法:
@Test
public void testFoo() {
ArrayList ftList = Lists.newArrayList();
List<Double> doubleList = Lists.newArrayList(1.0, 2.0);
foo(ftList, doubleList);
}
當運行測試我得到以下編譯錯誤:
reference to foo is ambiguous, both method foo(java.util.Collection,T) in path.to.class and method foo(java.util.Collection,java.util.Collection) in path.to.class match.
我在第二個傳遞集合參數爲什麼編譯器不知道 轉到第二種方法?
如果我更改方法簽名並從第一個參數中刪除泛型,我將 不會收到編譯錯誤,爲什麼?
因爲''也可以是'Collection' ..這是一個類似於任何其他類型的類型。 –
Arraylist不是'Collection' –
不相關,但不應該是'T valueToAppend'? –