Wpis z mikrobloga

@push3k-pro: Typy generyczne to pojęcie ogólniejsze - masz klasę A, która coś robi z obiektami klasy B, i żeby uniknąć pisania 100 klas różniących się tylko typem tej klasy B - masz typ generyczny, w którym to B jest parametrem.

Przykład klasa Dodawacz5DoLiczby. Możesz mieć liczbę typu Integer, Double, BigDecimal, itp. Zamiast pisać N klas które robią to samo na różnych typach piszesz generyka i typ klasy w której trzymasz
  • Odpowiedz
A można powiedzieć, że generyki to szablony do zarzadzania różnymi typami, a kolekcje (w javie) to szczególny rodzaj szablonów?


@push3k-pro: nie, bo kolekcje to nie są żadne szablony. Kolekcje to takie 'kontenerki' gdzie wrzucasz różne elementy, w odpowiedni sposób (zależny od konkretnego interfejsu kolekcji/konkretnej implementacji). Generyki w kontekście kolekcji to takie 'znaczniki' mówiące o tym, jakiego typu elementy możesz do tych 'kontenerków' wrzucać.
  • Odpowiedz
@push3k-pro: weźmy na przykład ArrayList, w niej możesz przetrzymywać wiele elementów bez potrzeby określania rozmiaru tej listy. Ale ArrayList jest zaimplementowane w ten sposób, gdy używasz new ArrayList() to wewnątrz tej klasy jest tworzona tablica o rozmiarze X. Gdy na obiekcie arraylist wykonujesz metodę add(T) to sprawdzane jest wewnątrz klasy ArrayList czy możesz dodać ten element (rozmiar tablicy), gdy już tablica jest zapełniona to tworzona jest nowa tablica np. o
  • Odpowiedz
@push3k-pro: W najprostszej wersji typ generyczny jest sposobem oddzielenia algorytmu (zachowania) od typu danych, na których ten algorytm operuje - tak, jak zostało opisane powyżej, wiele algorytmów/kontraktów/zachowwań jest zaimplementowanych tak samo dla różnych typów danych. To, jak różnych, określa już konkretny algorytm i system typów. Zwykłe przechowanie, iterowanie etc. nie narzuca ograniczeń (biwariancja). Operacje tworzące elementy są zazwyczaj kowariantne, a przyjmujące - kontrawariantne.
Natomiast same kolekcje są zaimplementowane w Javie
  • Odpowiedz
@push3k-pro: Koledzy przetłumaczyli bardzo dobrze, ale sucho. Jakbym już teraz nie rozumiał tych konceptów, to po ich tłumaczeniach nadal bym nie rozumiał…

Więc na przykładach…

Kolekcje. Masz książki. Book. Możesz mieć więc kolekcję książek, np BookShelf. Kolekcja to po prostu zbiór. Lista czegoś. Np lista książek. Do listy możesz dodawać rzeczy,
  • Odpowiedz