Kotlin - Generics (Typy generyczne) cz.2

To jest druga część o typach generycznych w Kotlin'ie. W tym artykule tłumaczę już nieco bardziej zaawansowane pojęcia.

Wstęp

Jeżeli o typch generycznych nie słyszałeś albo temat znasz tylko powierzchownie, to zachęcam Cię do sprawdzenia postu na stronie SamouczekProgramisty tutaj.

Jeżeli nie czytałeś części pierwszej o generykach to proponuję kliknąć tutaj.

W innym przypadku temat może wydać Ci się zbyt abstrakcyjny.

Type projections

Nie zawsze jest tak, że klasa generyczna może zwracać tylko obiekty parametru T na jaki została sprametryzowana. W celu rozwiązania Kotlin używa projekcji typów.

Tłumaczone jest to tak, że po stronie użycia (use-site) dostępne będą jedynie te funkcje danej klasy, które zwracają typ T.

Użycie słowa kluczowego out zabezpiecza przed np. zapisem do from.

Star-projections

Kolejnym dosyć zawiłym zagadnieniem są projekcje gwiazdki. Gwiazdka (*) w tym przypadku oznacza, że nie wiemy jakiego typu będziemy używać.

W takim przypadku ważna jest dla nas wartość, a nie typ.

Generic functions

Poza klasami oraz interfejsami generyczne mogą być także funkcje.

Szczególnie przydatne są one kiedy chcemy stworzyć listy generyczne lub zgeneralizować jakiś zbiór elementów. Parametr wyjściowy może być dowolny.

Co ciekawe jednym z rodzajów takich funkcji są Funkcje rozszeszające.

Generic constraints

Ostatnim rodzaje jaki zamierzam opisać w tym poście jest konstrukcja, która ogranicza pewien zbiór dozwolonych typów wejściowych.

Taka funkcja przyjmie tylko te typy, które dziedziczą po Comparable.

Działanie bardzo dobrze przedstawia przykład z oficjalnej dokumentacji.

Dziękuję Ci za przeczytanie tego materiału. Celem tego materiału jest jedynie nakreślenie ideii wykorzystania generyków w Kotlinie. Prawdopodobnie w praktyce będzie czekać Cię jeszcze dużo nauki ;)

shop
Otwórz Sklep Play

Zachęcam cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.