我正在嘗試使用Java中的泛型,並考慮了此示例。使用非泛型實現覆蓋泛型方法
如果我有ClassA<T>
,我可以用引用具體類的子類覆蓋它,例如ClassB extends ClassA<String>
,然後在任何ClassA使用T的地方,ClassB可以使用String。
現在,忽視了前面的ClassA
和ClassB
,如果我有一個抽象ClassA
,其中有一個通用的方法:
public <T> void doSomething(T data);
有沒有什麼方法可以讓我有一個ClassB
與一個具體的類重寫它,類似於前面的例子?我想出了一些可行的方法,即對類和方法進行參數化,但我想知道是否有其他方法。
class ClassA<T> {
public void doSomething(T data) {};
}
的原因,我不希望把參數的類,因爲它是唯一一個沒有任何與該類型的方法,而一些子類甚至可能不希望在該方法中做任何事情,所以我如果不打算使用它,則不需要在該類中添加參數。
備註:ClassA
的所有子類都是匿名類,所以增加了樂趣。
請參閱從@wowest答案從類似的問題 [重載泛型方法在Java中] [1] [1]:http://stackoverflow.com/questions/632033/overriding -java-generic-methods – Saasira 2012-05-26 21:36:40