Sobes.tech
Middle+

Šta je kovarijantnost tipova?

sobes.tech АИ

Одговор од АИ

Коваријантност типова је својство система типова које омогућава коришћење конкретнијег (подтип) типа тамо где се очекује општији (супертип) тип.

У контексту Јаве, то се често манифестује при раду са наслеђивањем и генерицима. На пример, ако класа Мачка наследи од Животиња, коваријантност омогућава коришћење Мачка тамо где се очекује Животиња.

Међутим, у Јави, генерички типови су по подразумевани инваријантни, што значи да List<Мачка> није подтип List<Животиња>. За подршку коваријантности користе се wildcard типови са ? extends:

List<? extends Животиња> животиње = new ArrayList<Мачка>();

Овде, ? extends Животиња означава да листа садржи објекте типа Животиња или њених подтипова, што омогућава безбедно читање објеката из листе, али забрањује додавање нових елемената (осим null).

Овим начином, коваријантност помаже у коришћењу подтипова на местима где се очекују општији типови, одржавајући безбедност типова и флексибилност кода.