Ковариантность типов в Java означает, что при наличии иерархии типов Дочерний extends Родитель
, можно использовать тип массива или генерика Дочерний[]
там, где требуется Родитель[]
, или ArrayList<Дочерний>
там, где требуется ArrayList<? extends Родитель>
.
Примеры:
Массивы:
java
Однако, попытка поместить в animals
объект другого типа, например Cat
, приведет к ArrayStoreException
во время выполнения. Это ослабляет типовую безопасность массивов.
Генерики:
По умолчанию генерики инвариантны. List<Dog>
НЕ является подтипом List<Animal>
. Для достижения ковариантности с генериками используются подстановочные типы (wildcards
) с ключевым словом extends
.
java
Ковариантность типов в Java означает, что при наличии иерархии типов Дочерний extends Родитель
, можно использовать тип массива или генерика Дочерний[]
там, где требуется Родитель[]
, или ArrayList<Дочерний>
там, где требуется ArrayList<? extends Родитель>
.
Примеры:
Массивы:
java
Однако, попытка поместить в animals
объект другого типа, например Cat
, приведет к ArrayStoreException
во время выполнения. Это ослабляет типовую безопасность массивов.
Генерики:
По умолчанию генерики инвариантны. List<Dog>
НЕ является подтипом List<Animal>
. Для достижения ковариантности с генериками используются подстановочные типы (wildcards
) с ключевым словом extends
.
java
Register or sign in to get access to full answers for all questions from the question bank.