1

ジェネリッククラス「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」のみを保持するように設定されていませんか?

4

2 に答える 2

12

次のように定義する必要があります

public class TrackList extends SimpleList<XmlTrack> {

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

はジェネリックですが、SimpleList拡張時に型引数を指定していません。

于 2012-10-24T14:52:46.937 に答える
1

あなたが必要かもしれません

public class TrackList extends SimpleList< XmlTrack >

于 2012-10-24T14:53:16.390 に答える