java - 从抽象类继承泛型类型方法——转换为特定类型

标签 java generics overriding abstract-class type-bounds

(在 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)

但这不符合覆盖processPage的要求来自 ConnectionProcessor .为什么是这样?我怎样才能得到想要的行为?我认为在 AlbumProcessor我可以插入 <Album>无处不在ConnectionProcessor<T> ,但事实并非如此。

最佳答案

尝试

//extend prameterized version of ConnectionProcessor<T> with Album as actual type argument
public class AlbumProcessor extends ConnectionProcessor<Album> {

代替

public class AlbumProcessor<Album> extends ConnectionProcessor {

当您执行上述操作时,您正在扩展通用类型的原始版本 ConnectionProcessor<T>并引入一个新的正式类型参数 - Album (如 T )在那种情况下不是实际的类型参数。

关于java - 从抽象类继承泛型类型方法——转换为特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12716589/

相关文章:

java - Xtext "This rule call is part of a left recursive call graph."中的左递归问题

c# - 方法签名、重载、覆盖 : are all these terms related?

java - 动态地将方法体重新分配给对象

java - onListItemClick (mNotesCursor) 的问题

通用返回类型上的 Javac 错误

java - 按类型参数对泛型类的对象进行排序

尝试运行 .exefile 时启动时出现 Java 错误

java - 我们应该使用jms吗?

java - 无法设置 JPanel 颜色和 JRadioButton 不可见性

c# - 返回 'IList' 与 'ICollection' 与 'Collection'