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 #44: klasy zagnieżdżone (nested classes)

java inner static classes

Ostatnim tematem na poziomie średnio-zaawansowanym, o którym opowiem, są klasy zagnieżdżone. Wiem, że brzmi to dość enigmatycznie, ponieważ, dotąd pokazywałem jedynie kod zawarty tylko w jednej klasie. Jednak język Java daje dużo większe możliwości, niż na pierwszy rzut oka, można by się spodziewać. Klasy wewnętrzne można po prostu zdefiniować jako klasy w innej klasie. Klasy … Dowiedz się więcej

Java #43: JAXB – czytanie plików xml

java reading xml

JAXB (ang. Java Architecture for XML Binding) to wbudowana biblioteka Javy, która umożliwia łatwe przetwarzanie niewielkich plików xml. Dla osób, które nie miały dotąd do czynienia, z tymi typami plików, tłumaczę, że pliki xml oparte są o strukturę drzewiastą. Dane zawarte są w odpowiednich tagach (np. <root>rodzic</root>). Jeśli informacje przechowywane w nich zależne są od … Dowiedz się więcej

Java #42: pakiet NIO (new input-output)

java new input output

Oprócz używania standardowych strumieni wyjścia i wejścia, w Javie został zaimplementowany specjalny pakiet NIO (ang. new input-output), który również odpowiada za pracę z sygnałami przychodzącymi i wychodzącymi z Twojego programu. Specyfiką tego rozwiązania jest jednak to, że nie korzysta on ze strumieni, tylko z tzw. buforów i kanałów (ang. channel)*. Uproszczone wczytywanie Pierwszą metodę, którą … Dowiedz się więcej

Java #41: Strumienie znakowe

java bufferreader bufferwriter

Ten wpis będzie bardzo podobny do poprzedniego, także jeśli jeszcze tego nie zrobiłeś/aś, przeczytaj wpierw lekcję o strumieniach danych. Tym razem zamiast korzystać z strumieni wejścia i wyjścia, użyję jednej z wielu klas typu Reader i Writer. Strumienie znakowe działają bardzo podobnie jak klasy strumieni, jednak są bardziej przystosowane do pracy z plikami tekstowymi. Wybrane … Dowiedz się więcej

Java #40: strumienie wejścia/wyjścia

Java inputstream outputstream

Wiesz już dużo o programowaniu, ale Twój program nie ma zbyt wielkiego sensu, jeśli dane wejściowego i wyjściowe za każdym razem będziesz musiał na stałe ustawiać w swoim programie. W tej lekcji nauczysz się wykorzystywać strumienie wejścia lub wejścia, które możesz zastosować np. do pracy na plikach. Klasy w standardzie Javy, które odpowiadają za obsługę … Dowiedz się więcej