java - 在扩展泛型类的类中初始化实例变量

标签 java list generics extend

我有一个通用类“SimpleList”(摘录):

public abstract class SimpleList<T> {

   protected List<T> list;

   public SimpleList(List<T> list) {
      this.list = list;
   }
}

还有另一个扩展它的类“TrackList”(摘录):

public class TrackList extends SimpleList {

    public TrackList(List<XmlTrack> list) {
        super(list);
    }
}

在“TrackList”中,我指定该列表包含“XmlTrack”类型的对象。不过,似乎不可能从该列表中获取对象并访问其方法。例如,这将不起作用:

list.get(0).someMethodSpecificToXmlTrack()

我不明白为什么这不起作用? “SimpleList”中的列表不是设置为仅包含“XmlTrack”吗?

最佳答案

你需要定义为

public class TrackList extends SimpleList<XmlTrack> {

    public TrackList(List<XmlTrack> list) {
        super(list);
    }
}

因为 SimpleList 是泛型的,但是你在扩展它的时候没有指定类型参数。

关于java - 在扩展泛型类的类中初始化实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13051737/

相关文章:

java - 如何更改 Scroll JavaFX 上的输出流?

java - 按后退按钮不会关闭 Android 应用程序

c# - 将多个通用接口(interface)传递给一个方法

java - 我的程序中的内存使用情况没有改变

java - Hibernate 创建错误的创建表语句?

c++ - 在运行时从列表中添加和删除

android - recyclerview 中的粘性标题/项目

r - R 中的列表(或字典)列表

java - 无法访问 ArrayList 的 ArrayList(通用)

java - 无法编译 FutureTask 内部类创建