Co je to kovariance typů?
sobes.tech AI
Odpověď od AI
Kovarience typů je vlastností systému typů, která umožňuje používat specifičtější (podtyp) typ tam, kde je očekáván obecnější (supertyp) typ.
V kontextu Javy se to často projevuje při práci s dědičností a generiky. Například pokud třída Kočka dědí od Zvíře, kovariance umožňuje použít Kočka tam, kde je očekáváno Zvíře.
Nicméně v Javě jsou generiky ve výchozím nastavení invariantní, tj. List<Kočka> není podtypem List<Zvíře>. Pro podporu kovariance se používají wildcard typy s ? extends:
List<? extends Zvíře> zvířata = new ArrayList<Kočka>();
Zde ? extends Zvíře znamená, že seznam obsahuje objekty typu Zvíře nebo jeho podtypů, což umožňuje bezpečné čtení objektů ze seznamu, ale zakazuje přidávání nových prvků (kromě null).
Tímto způsobem kovariance pomáhá používat podtypy na místech, kde jsou očekávány obecnější typy, přičemž zachovává bezpečnost typů a flexibilitu kódu.