我有一個方法有一個類型化的List參數,從另一個(類型)類繼承的一些麻煩。帶有鍵入列表和繼承的方法
讓我們保持它的簡單:
public class B<T> {
public void test(List<Integer> i) {
}
}
在B類有一個無用的通用T,以及測試()希望Integer列表。
現在,如果我做的:
public class A extends B {
// don't compile
@Override
public void test(List<Integer> i) {
}
}
我得到一個「A型的方法測試(列表)必須覆蓋或實現超方法」的錯誤,這是不應該的。
但是刪除列表的類型工作...雖然它不依賴於類通用。
public class A extends B {
// compile
@Override
public void test(List i) {
而且還定義下面的無用一般使用類型列表
public class A extends B<String> {
// compile
@Override
public void test(List<Integer> i) {
所以我無言以對,通用B的應該對試驗()列表的類型沒有影響。有沒有人知道發生了什麼?
感謝
我相信你的答案在於[here](http://stackoverflow.com/a/502770/248082)。 – nobeh
傳統上[大寫V]'Void'用於你不想使用的通用參數。例如,在不返回值的情況下使用java.security.PreivilegedAction'(返回'null' - 它是唯一有效的'Void'引用)。 –