我正在尝试使用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