型パラメータについて混乱しています。次のコードでは、CollectionDataの角括弧内の型を型パラメータと呼ぶことができます。 ArrayListとGenerator内の型は型パラメータではなく、CollectionDataで同じである必要があります。それを理解する方法?型パラメータを正しく使用する方法
//correct
public class CollectionData<T> extends ArrayList<T> {
CollectionData(Generator<T> generator) {
}
}
interface Generator<E> {
E next();
}
以下は間違っています。しかし、私はこれを書くのを手助けすることはできません。
// wrong
public class CollectionData<T> extends ArrayList<E> {
CollectionData(Generator<W> generator) {
}
}
interface Generator<E> {
E next();
}
追加さ:
上記の例では、唯一のかなりのArrayListまたは発電機よりも、CollectionDataの山括弧で定義されている変数を入力することができますか? ArrayListとCollectionDataは、これらの型を使用します。右?
「次は間違っています」必ずしも状況に左右されません。型変数 'E'と' W'が定義されているスコープに書いたのであれば、それは(例えばネストされたクラスとして)動作します。しかし、私はこれを書くのを手伝うことはできません。どうして?どういう意味ですか? –
@Andy Turner ArrayListが型パラメータ 'E'を定義すると思います。 – Hel