我有一個抽象類,它有一個泛型的方法,我想通過將泛型參數替換爲特定類型來覆蓋泛型方法。所以在僞代碼我有以下幾點:Java的泛型方法的繼承和覆蓋規則
public abstract class GetAndParse {
public SomeClass var;
public abstract <T extends AnotherClass> void getAndParse(T... args);
}
public class Implementor extends GetAndParse {
// some field declarations
// some method declarations
@Override
public <SpecificClass> void getAndParse(SpecificClass... args) {
// method body making use of args
}
}
但由於某種原因,我不能這樣做?我是否犯了某種語法錯誤,或者這種繼承和覆蓋是不允許的?具體來說,我得到一個關於@Override
的錯誤,因爲eclipse IDE不停地提醒我執行getAndParse
。
下面是我希望上面的代碼工作。在我的代碼中的其他地方,有一種方法需要實現GetAndParse
的對象實例,這意味着它們具有我可以使用的getAndParse
方法。當我打電話getAndParse
該實例上編譯器檢查,看看我是否在正確的方式使用的T
具體實例,所以特別T
應該擴展AnotherClass
,它應該是SpecificClass
。
僞代碼太抽象,需要更多信息 – irreputable 2011-03-18 00:48:48
使用'public abstract void getAndParse(Args ... args);'沒有任何意義。什麼是類型參數適合?編譯器應該如何確定它的實際值以及它在哪裏使用它? –
maaartinus
2011-03-18 00:50:19
你能給我們一個完整的例子,它實際上是可編譯的(除了有問題的錯誤),併產生你提到的錯誤? – 2011-03-18 01:47:24