我遇到了錯誤,我認爲會是一個直截了當的演繹,其中一個使用泛型的方法指定一個泛型類的一個版本作爲一個參數,第二個參數指定類型用於前一個參數的版本。Java泛型類型扣除錯誤
static class GenericClass<T0>
{
T0 getT()
{
return null;
}
static <T1> void func3(GenericClass<T1> a, T1 b)
{
}
}
void testcase(GenericClass<? extends Integer> a)
{
GenericClass.func3(a, a.getT());
}
不幸的是它顯示爲錯誤:
"The method func3(GenericClass<T1>, T1) in the type GenericClass is not applicable for the arguments (GenericClass<capture#6-of ? extends Integer>, capture#7-of ? extends Integer)"
但是這種變化FUNC3的頭作品。
static <T1> void func3(GenericClass<? extends T1> a, T1 b)
對測試用例方法的標題進行了這種更改。
void testcase(GenericClass<Integer> a)
即使測試用例頭不給該類的具體類型,該類指定返回類型將是一樣的泛型類型,爲什麼這個錯誤訊息建議他們是潛在的兩種不同類型的?
我很確定Java從不跟蹤兩個'''類型是否相同'?',即使它可以。 – user2357112 2014-09-04 23:19:36