Java #48: własny iterator (interfejs Iterable)

java iterator

Własny iterator Skoro znasz zarówno typy generyczne jak i struktury danych, to możesz napisać swój własny iterator, który będzie przechodził po kolekcji, zgodnie z Twoją intencją. Wpierw należy zaimplementować interfejs Iterator, który zawiera dwie metody hasNext i next. Pierwsza z nich musi zwracać warunek logiczny prawda-fałsz, decydujący kiedy przerwać pętle. Druga metoda powinna decydować w … Dowiedz się więcej

Java #47: typ wieloznaczny (wildcard)

java erase type

Ostatnim tematem związanym z typami generycznymi, jest używanie tak zwanego typu wieloznacznego (ang. wildcard). Oznacza się go za pomocą znaku zapytania (czyli np. ArrayList<?>). Powszechnym wykorzystaniem tego mechanizmu jest sytuacja, gdy wiedza o tym, jaki typ finalnie będzie użyty jest kompletnie nie znana. Świetnym przykładem, jak użyć typ wieloznaczny, jest refactoring* starego kodu. Pewnie tego … Dowiedz się więcej

Java #46: ograniczenia typów generycznych

java generic type

Ponieważ każda klasa w Javie. która nie jest finalna, może być dziedziczona lubi sama dziedziczyć. To pojawia się problem, w jaki sposób taka klasa miałaby być typem generycznym. Wiesz ze wcześniejszych lekcji, że polimorfizm umożliwia sprytne 'przeskakiwanie’ pomiędzy implementacjami danej klasy. Istnieje, jednak sposób, w jaki można podczas programowania Twojego generyka, 'pokazać’ Javie jakiej instancji … Dowiedz się więcej

Java #45: typy generyczne (generics)

java generics

Klasa generyczna i typy generyczne Używając kolekcji bardzo często korzystałem z magicznych ostrych nawiasów, w obrębie których wpisywałem nazwę klasy, której typu miały być jej elementy. Za przykład może posłużyć ArrayList<String>, która jest strukturą przechowującą wiele różnych obiektów typu String. Taki zapis nazywa się klasą generyczną (ang. generic class). Każda klasa w Javie może być … Dowiedz się więcej

Java #30: kolekcje (ogólnie)

java collections

Kolekcje – zbiór struktur danych w Javie Korzystanie z tablic posiada jedną zasadniczą wadę. Mianowicie za każdym razem musisz wiedzieć, ile maksymalnie potrzeba w niej elementów. Nie można stworzyć tablicy bez wpisania jej rozmiaru i nawet jeśli wypełnisz jedną komórkę danymi, to i tak wirtualna maszyna Javy zarezerwuje dużo więcej pamięci niż faktycznie używasz. Dodatkowo, … Dowiedz się więcej

Java #3: Autoboxing, unboxing i literały

java autoboxing

Literały a autoboxing Pisząc swój pierwszy kod na pewno zastanawiałeś/aś się dlaczego klasy takie jak String, Integer, czy Double inicjalizuje się poprzez znak ‘=’. Przecież mówiłem w poprzedniej lekcji, że obiekty tworzy się poprzez słowo kluczowe ‘new’. Tak jest w rzeczy samej. Także obiekty wyżej wymienionych klas można stworzyć w ten sam sposób. Dlaczego więc … Dowiedz się więcej