我有一个通用类“ 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是通用的,但是在扩展它时没有指定类型参数。

07-28 14:20