zaawansowane wykorzystanie typów generycznych w języku java
DESCRIPTION
Devcast "Zaawansowane wykorzystanie typów generycznych w języku Java" zawiera treści związane z wykorzystywaniem i tworzeniem typów generycznych. Na początku są omówione podstawowe mechanizmy użycia, szczególnie w kontekście kolekcji języka Java. Następnie, przechodzimy do bardziej zaawansowanych zagadnień, takich jak refleksja, metody clone i equals, czy też interfejsy generyczne. Przedstawiamy także zagadnienia, które są specyficzne dla języka Java w kontekście typów generycznych, takich jak wymazywanie typów.TRANSCRIPT
Zaawansowane wykorzystanie typw generycznych w jzyku JavaMateriay pochodz ze strony: www.devcastzone.com
copyright BNS MEDIA
www.devcastzone.com
Podstawowe uycie typw generycznych Konkretne typy generyczneZaawansowane wykorzystanie typw generycznych w jzyku Java
copyright BNS MEDIA
www.devcastzone.com
Tred moduu1. 2. 3. 4. 5. Przyczyny powstania generykw Generyki pochodzenie Podstawowe zasady korzystania z generykw Typy konkretne Kod generyczny a kod odziedziczony (ang. legacy code) 6. Typy generyczne a czas wykonania programu
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
3
Przyczyny powstania generykw Java bez generykw oglne, niekonkretne kolekcje List, Set, Map mogy przechowywad dowolne obiekty Elastycznod? Tylko pozorna
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
4
Przyczyny powstania generykw Przykad: moliwod istnienia listy zawierajcej elementy rnych typw:List kolekcja = new ArrayList(); kolekcja.add(3); kolekcja.add("tekst"); kolekcja.add(5);
Niegeneryczna kolekcja moe zawierad dowolne dane!Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
copyright BNS MEDIA
5
Przyczyny powstania generykw
Rozwizanie zastosowanie generycznej listy
List kolekcja = new ArrayList(); kolekcja.add(3); kolekcja.add("tekst"); kolekcja.add(5);
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
6
Przyczyny powstania generykw rodowisko zgosi bd na etapie kompilacji W tym przypadku lista moe przechowywad tylko liczby cakowite Oglnie, lista moe zawierad obiekty podanego typu lub typw po nim dziedziczcych
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
7
Generyki pochodzenie Wprowadzone w Java Standard Edition 5.0
Podobne mechanizmy: szablony w C++, typy generyczne na platformie .NET (np. w C#, VB.NET)
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
8
Generyki pochodzenie Mona korzystad z nich we wszystkich aplikacjach, ktre korzystaj z jzyka Java w wersji 5 Nie mona z nich korzystad w Java ME w tej technologii jzyk Java jest obsugiwany w wersji 1.3!
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
9
Generyki Podstawowe zasady Skadnia:o
Typy generyczne podaje si wewntrz nawiasw ostrych, np. Typy generyczne podaje si tu za nazw klasy/interfejsu, np. List
o
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
10
Generyki Podstawowe zasady Skadnia:o
W przypadku wywoao generycznych konstruktorw, typ generyczny znajduje si za nazw klasy, np. new ArrayList() W bardziej zaawansowanych wywoaniach metod, typ pojawia si przed nazw metody, np. Klasa.metoda()
o
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
11
Typy konkretne Generyczny typ konkretny to zwyka nazwa typu, ktry jest stosowany wobec okrelonej klasy W przypadku generycznej listy List, typem konkretnym jest Integer
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
12
Typy konkretne Dziedziczenie na poziomie zwykych klas jest moliwe i jest czsto stosowane:List kolekcja = new ArrayList();
Klasa ArrayList implementuje interfejs List, a typy generyczne si zgadzaj OK.
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
13
Typy konkretne Analogiczna sytuacja w przypadku typw generycznych:List kolekcja = new ArrayList();
Klasa Integer dziedziczy po Number, ale taka konstrukcja jest nieprawidowa!
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
14
Typy konkretne Przyczyna bdu?
Zmienna typu List pozwala na dodawanie dowolnych liczb typu Integer, Float, Byte (i innych wrapperw typw prymitywnych)
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
15
Typy konkretne Konkretny obiekt ArrayList nie moe pozwolid na dodanie licz innych typw
Problem!
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
16
Typy konkretne Rozwizanie parametry (wyraenia) wieloznaczne
Wicej na ten temat w kolejnych moduach
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
17
Kod generyczny a kod odziedziczony Cay czas mona wykorzystywad stare, niegeneryczne wersje kolekcji i innych klas Powd? Legacy code kod odziedziczony niechd do zerwania kompatybilnoci wstecznej stare, niegeneryczne aplikacje mog dziaad w nowych wersjach Javy
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
18
Kod generyczny a kod odziedziczony Efekt stosowania niegenerycznego kodu ostrzeenie generowane przez kompilator
Ich stosowanie jest wysoce niezalecane poza moliwoci uzyskania bdw, kod na og staje si bardziej skomplikowany
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
19
Kod generyczny a kod odziedziczony Java dopuszcza czenie typw generycznych i niegenerycznych:
List lista = new ArrayList(); List drugaLista = new ArrayList();
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
20
Kod generyczny a kod odziedziczony Pierwsza z instrukcji nie ma sensu (lista typu List jest po prostu niegeneryczna)
Druga bdzie dziaad w porzdku, bo typ zmiennej jest generyczny Efekt w obu przypadkach: ostrzeenia kompilatoraZaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
copyright BNS MEDIA
21
Typy generyczne a czas wykonania programu Generyki funkcjonuj na etapie kompilacji programu Pniej poszczeglne konstrukcje nie s weryfikowane
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
22
Typy generyczne a czas wykonania programu Naley wic uwaad, aby wszdzie, gdzie si da, stosowad konstrukcje generyczne
Zmniejszaj one ryzyko popenienia bdu i upraszczaj sporo konstrukcji w kodzie (np. rzutowania)
copyright BNS MEDIA
Zaawansowane wykorzystanie typw generycznych w jzyku Javawww.devcastzone.com
23
Zaawansowane wykorzystanie typw generycznych w jzyku Java program penego szkolenia1. Podstawowe uycie typw generycznych. Konkretne typy generyczneo o o
oo o
Przyczyny powstania generykw Generyki pochodzenie Podstawowe zasady korzystania z generykw Typy konkretne Kod generyczny a kod odziedziczony (ang. legacy code) Typy generyczne a czas wykonania programu
2. Podstawowe uycie typw generycznych. Wyraenia wieloznaczne (wildcards)o o o o o o
Przyczyny stosowania wyraeo wieloznacznych Wyraenia wieloznaczne nieograniczone (unbounded) Zastosowanie Wyraenia wieloznaczne ograniczone (bounded) Zastosowanie Porwnanie obu rodzajw wyraeoTworzenie aplikacji z uyciem biblioteki Hibernatewww.devcastzone.com
copyright BNS MEDIA
24
Zaawansowane wykorzystanie typw generycznych w jzyku Java program penego szkolenia3. Metody generyczneo o o o o o
Sens istnienia generycznych metod Generyki i ich wpyw na wywoania metod Tworzenie metod generycznych Wyraenia wieloznaczne w metodach generycznych Parametry typw Konstrukcja super Wprowadzenie typw generycznych podczas tworzenia klas Wykorzystywanie typu generycznego w obrbie klasy Wyraenia wieloznaczne a klasy generyczne Zasig i widocznod parametru typu Kontekst metody Kontekst klasy Kontekst interfejsu Kontekst statyczny Dziedziczenie po typie wyznaczonym przez parametr typuTworzenie aplikacji z uyciem biblioteki Hibernatewww.devcastzone.com
4. Parametry typw generycznych. Klasy generyczneo o o
5. Parametry typu a dziedziczenie, zasig, kontekst statycznyo o o o o ocopyright BNS MEDIA
25
Zaawansowane wykorzystanie typw generycznych w jzyku Java program penego szkolenia6. Argumenty typw generycznych (type arguments)o o o o
Uycie argumentw typu Dopuszczalne argumenty typu Precyzowanie argumentw dla wywoao funkcji i tworzenia instancji obiektw Homogenicznod i heterogenicznod zagniedone operatory wieloznaczne Mieszanie typw parametryzowanych z goymi problemy: Kolekcje goe i parametryzowane Interfejsy
7. Mieszanie typw generycznych z kodem uywajcym typw goych (raw types)o
o
Kolekcje weryfikowalne remedium? Wielokrotne uycie implementacja tego samego interfejsu wicej ni raz Implementacja generycznych interfejsw a dziedziczenie Wyjtki od regu? Metoda equals cele, moliwoci, puapki Metoda clone cele, moliwoci, puapkiTworzenie aplikacji z uyciem biblioteki Hibernatewww.devcastzone.com
8. Interfejsy generyczneo o o
9.
Implementacja metod equals i cloneo o
copyright BNS MEDIA
26
Zaawansowane wykorzystanie typw generycznych w jzyku Java program penego szkolenia10. Wymazywanie typw (type erasure), zamiecanie sterty, typy generyczne a obsuga wyjtkwo
Wymazywanie typw Schemat dziaania Konsekwencje
o o
Zamiecanie sterty Obsuga wyjtkw a typy generyczne Tworzenie instancji obiektu Class Sprawdzenie poprawnoci typu w czasie wykonania Rzutowanie Informacje statyczne i dynamiczne Typy generyczne a typy niegeneryczne Typy parametryzowane a typy goe Dostp do informacji o metodzie Dostp do informacji o parametrach typuTworzenie aplikacji z uyciem biblioteki Hibernatewww.devcastzone.com
11. Refleksja - przekazywanie informacji o typach w czasie wykonaniao o o o
12. Refleksja - pozyskiwanie informacji o typach w czasie wykonaniao o o o
o
copyright BNS MEDIA
27
Zaawansowane wykorzystanie typw generycznych w jzyku Java http://www.devcastzone.com/course,zaawansowanewykorzystanie-typow-generycznych-w-jezyku-java
Zapraszamy
copyright BNS MEDIA
Tworzenie aplikacji z uyciem biblioteki Hibernatewww.devcastzone.com
28