【发布时间】:2012-10-03 20:43:18
【问题描述】:
(在 Java 中工作) 我有一个抽象类,整个类都有通用类型:
public abstract class ConnectionProcessor<T>
{
public void process()
{
for (List<T> resultsPage : connection)
{
processPage(resultsPage);
}
}
protected abstract void processPage(List<T> resultsPage);
}
我有另一个类扩展了上述抽象类,声明如下:
public class AlbumProcessor<Album> extends ConnectionProcessor
{
@Override
protected void processPage(List resultsPage)
{
//Do stuff here specific to Album
}
}
这个声明工作正常,但在processPage 我想做Album 特定的事情,并且在不需要使用它时我尽量避免强制转换。我更喜欢这是方法声明:
protected void processPage(List<Album> resultsPage)
但这不符合从ConnectionProcessor 覆盖processPage 的要求。为什么是这样?如何获得所需的行为?我认为在AlbumProcessor 中我可以在任何地方插入<Album> ConnectionProcessor 有<T>,但事实并非如此。
【问题讨论】:
标签: java generics overriding abstract-class type-bounds