Дженерики. Наследование

Дженерики. Наследование

При наследовании одного дженерика другим типы их параметров должны либо совпадать, либо для родительского класса должен быть указан конкретный тип.


class A<T> {}
class M<K, V> {}

class B<T> extends A<T> {}
class C<X> extends A<Number> {}
class L<K, V> extends M<K, V> {}
Для дочернего класса можно указать дополнительный тип:


class D<Y, T> extends A<T> {}
Или вообще не указывать тип у родителя:


class E<Z> extends A {}
Следующие варианты записей не скомпилируются:


class F<Z> extends A<T> {}
class G<K> extends M<K, V> {}
class H<Y, T> extends M<K, V> {}
Дженерики