Mi a típuskovariancia?
sobes.tech MI
Válasz az MI-től
A típusok kovarianciája a típusrendszer egyik tulajdonsága, amely lehetővé teszi, hogy egy szűkebb (altípus) típust ott használjunk, ahol általánosabb (szuper típus) típust várnak.
Java kontextusában ez gyakran megnyilvánul öröklődés és generikus típusok (generics) használatakor. Például, ha az Macska osztály az Állat-ból öröklődik, a kovariancia lehetővé teszi, hogy Macska-t ott használjunk, ahol Állat-ot várnak.
Azonban Java-ban a generikus típusok alapértelmezés szerint invariánsak, azaz a List<Macska> nem altípusa a List<Állat>-nak. A kovariancia támogatásához wildcard típusokat használunk ? extends-szel:
List<? extends Állat> állatok = new ArrayList<Macska>();
Itt a ? extends Állat azt jelenti, hogy a lista Állat vagy annak altípusainak objektumait tartalmazza, ami lehetővé teszi az objektumok biztonságos olvasását a listából, de tiltja új elemek hozzáadását (kivéve a null-t).
Így a kovariancia segít az altípusok használatában olyan helyeken, ahol általánosabb típusokat várnak, miközben megőrzi a típusbiztonságot és a kód rugalmasságát.