在扩展泛型类的类中启动实例变量

时间:2012-10-24 14:51:11

标签: 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”?

2 个答案:

答案 0 :(得分:12)

您需要将其定义为

public class TrackList extends SimpleList<XmlTrack> {

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

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

答案 1 :(得分:1)

可能你需要

公共类TrackList扩展了SimpleList&lt; XmlTrack &gt;