Kategorie
Ebooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komputer w biurze
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Multimedialne szkolenia
- Nieruchomości
- Perswazja i NLP
- Podatki
- Polityka społeczna
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Raporty, analizy
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
E-prasa
- Architektura i wnętrza
- Biznes i Ekonomia
- Dom i ogród
- E-Biznes
- Finanse
- Finanse osobiste
- Firma
- Fotografia
- Informatyka
- Kadry i płace
- Komputery, Excel
- Księgowość
- Kultura i literatura
- Naukowe i akademickie
- Ochrona środowiska
- Opiniotwórcze
- Oświata
- Podatki
- Podróże
- Psychologia
- Religia
- Rolnictwo
- Rynek książki i prasy
- Transport i Spedycja
- Zdrowie i uroda
-
Historia
-
Informatyka
- Aplikacje biurowe
- Bazy danych
- Bioinformatyka
- Biznes IT
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronika
- Fotografia cyfrowa
- Grafika komputerowa
- Gry
- Hacking
- Hardware
- IT w ekonomii
- Pakiety naukowe
- Podręczniki szkolne
- Podstawy komputera
- Programowanie
- Programowanie mobilne
- Serwery internetowe
- Sieci komputerowe
- Start-up
- Systemy operacyjne
- Sztuczna inteligencja
- Technologia dla dzieci
- Webmasterstwo
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poemat
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Podręczniki szkolne
-
Popularnonaukowe i akademickie
- Archeologia
- Bibliotekoznawstwo
- Filmoznawstwo
- Filologia
- Filologia polska
- Filozofia
- Finanse i bankowość
- Geografia
- Gospodarka
- Handel. Gospodarka światowa
- Historia i archeologia
- Historia sztuki i architektury
- Kulturoznawstwo
- Lingwistyka
- Literaturoznawstwo
- Logistyka
- Matematyka
- Medycyna
- Nauki humanistyczne
- Pedagogika
- Pomoce naukowe
- Popularnonaukowa
- Pozostałe
- Psychologia
- Socjologia
- Teatrologia
- Teologia
- Teorie i nauki ekonomiczne
- Transport i spedycja
- Wychowanie fizyczne
- Zarządzanie i marketing
-
Poradniki
-
Poradniki do gier
-
Poradniki zawodowe i specjalistyczne
-
Prawo
- BHP
- Historia
- Kodeks drogowy. Prawo jazdy
- Nauki prawne
- Ochrona zdrowia
- Ogólne, kompendium wiedzy
- Podręczniki akademickie
- Pozostałe
- Prawo budowlane i lokalowe
- Prawo cywilne
- Prawo finansowe
- Prawo gospodarcze
- Prawo gospodarcze i handlowe
- Prawo karne
- Prawo karne. Przestępstwa karne. Kryminologia
- Prawo międzynarodowe
- Prawo międzynarodowe i zagraniczne
- Prawo ochrony zdrowia
- Prawo oświatowe
- Prawo podatkowe
- Prawo pracy i ubezpieczeń społecznych
- Prawo publiczne, konstytucyjne i administracyjne
- Prawo rodzinne i opiekuńcze
- Prawo rolne
- Prawo socjalne, prawo pracy
- Prawo Unii Europejskiej
- Przemysł
- Rolne i ochrona środowiska
- Słowniki i encyklopedie
- Zamówienia publiczne
- Zarządzanie
-
Przewodniki i podróże
- Afryka
- Albumy
- Ameryka Południowa
- Ameryka Środkowa i Północna
- Australia, Nowa Zelandia, Oceania
- Austria
- Azja
- Bałkany
- Bliski Wschód
- Bułgaria
- Chiny
- Chorwacja
- Czechy
- Dania
- Egipt
- Estonia
- Europa
- Francja
- Góry
- Grecja
- Hiszpania
- Holandia
- Islandia
- Litwa
- Łotwa
- Mapy, Plany miast, Atlasy
- Miniprzewodniki
- Niemcy
- Norwegia
- Podróże aktywne
- Polska
- Portugalia
- Pozostałe
- Rosja
- Rumunia
- Słowacja
- Słowenia
- Szwajcaria
- Szwecja
- Świat
- Turcja
- Ukraina
- Węgry
- Wielka Brytania
- Włochy
-
Psychologia
- Filozofie życiowe
- Kompetencje psychospołeczne
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Audiobooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Nieruchomości
- Perswazja i NLP
- Podatki
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
Historia
-
Informatyka
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Popularnonaukowe i akademickie
-
Poradniki
-
Poradniki zawodowe i specjalistyczne
-
Prawo
-
Przewodniki i podróże
-
Psychologia
- Filozofie życiowe
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Kursy video
-
Bazy danych
-
Big Data
-
Biznes, ekonomia i marketing
-
Cyberbezpieczeństwo
-
Data Science
-
DevOps
-
Dla dzieci
-
Elektronika
-
Grafika/Wideo/CAX
-
Gry
-
Microsoft Office
-
Narzędzia programistyczne
-
Programowanie
-
Rozwój osobisty
-
Sieci komputerowe
-
Systemy operacyjne
-
Testowanie oprogramowania
-
Urządzenia mobilne
-
UX/UI
-
Web development
-
Zarządzanie
Podcasty
- Ebooki
- Programowanie
- Java
- Kotlin w akcji
Szczegóły ebooka
Kotlin został zaprojektowany jako obiektowy język w pełni interoperacyjny z kodem napisanym w Javie. Został zaprezentowany w 2011 roku. Od tego czasu jest rozwijany, a jego popularność stale rośnie. Kotlin jest językiem o statycznie typowanych zmiennych. Charakteryzuje się czytelną składnią i ścisłą integracją z istniejącymi projektami, bibliotekami i platformami utworzonymi w Javie. Kompiluje się do postaci binarnego kodu JVM, więc można go uruchamiać wszędzie tam, gdzie jest Java, również w Androidzie. Kotlin zainteresuje programistów aplikacji mobilnych również dlatego, że kod napisany w tym języku obciąża system w minimalnym stopniu. Przy tym wszystkim środowisko Kotlina jest w całości otwartym oprogramowaniem do bezpłatnego korzystania w dowolnych celach!
Ta książka jest przeznaczona dla osób, które mają pewne doświadczenia z Javą i chcą szybko poznać Kotlina w stopniu pozwalającym na tworzenie aplikacji serwerowych, dla systemu Android i maszyn JVM. Znalazł się tu opis podstawowych cech języka i jego najważniejszych struktur, a następnie przedstawiono bardziej zaawansowane zagadnienia, takie jak tworzenie wysokopoziomowych abstrakcji i języków domenowych. Duży nacisk położono na integrację kodu Kotlin z istniejącymi projektami Java oraz na sposoby wprowadzania Kotlina do aktualnie użytkowanego środowiska. Zaprezentowano kilka przydatnych bibliotek i narzędzi, znakomicie ułatwiających pracę programiście. Nie zabrakło również licznych przykładów kodu, ilustrujących omawiane zagadnienia.
W tej książce między innymi:
- solidne wprowadzenie do Kotlina
- klasy, klasy danych i funkcje lambda
- typy danych, w tym kolekcje i puste zmienne
- własne interfejsy i abstrakcje w Kotlinie
- parametry reifikowanego typu, adnotacje i refleksje
Kotlin - idealny dla Androida!
Przedmowa 11
Wstęp 13
Podziękowania 15
O książce 17
O autorach 21
CZĘŚĆ I. WPROWADZENIE DO JĘZYKA KOTLIN 23
Rozdział 1. Kotlin: co to jest i po co? 25
- 1.1. Przedsmak Kotlina 25
- 1.2. Najważniejsze cechy języka Kotlin 26
- 1.2.1. Docelowe platformy: serwery, Android i wszystko, gdzie jest Java 26
- 1.2.2. Statyczne typowanie danych 27
- 1.2.3. Programowanie funkcyjne i obiektowe 28
- 1.2.4. Bezpłatne i otwarte oprogramowanie 29
- 1.3. Zastosowania języka Kotlin 30
- 1.3.1. Kotlin na serwerach 30
- 1.3.2. Kotlin w Androidzie 31
- 1.4. Filozofia języka Kotlin 32
- 1.4.1. Pragmatyzm 32
- 1.4.2. Zwięzłość 33
- 1.4.3. Bezpieczeństwo 34
- 1.4.4. Kompatybilność 35
- 1.5. Narzędzia języka Kotlin 35
- 1.5.1. Kompilator kodu 36
- 1.5.2. Wtyczki dla IntelliJ IDAE i Android Studio 36
- 1.5.3. Interaktywna powłoka 37
- 1.5.4. Wtyczka dla Eclipse 37
- 1.5.5. Internetowy "plac zabaw" 37
- 1.5.6. Konwerter Java-Kotlin 37
- 1.6. Podsumowanie 38
Rozdział 2. Podstawy języka Kotlin 39
- 2.1. Podstawowe elementy: funkcje i zmienne 39
- 2.1.1. Witaj, świecie! 40
- 2.1.2. Funkcje 40
- 2.1.3. Zmienne 42
- 2.1.4. Proste formatowanie ciągów znaków: szablony 43
- 2.2. Klasy i właściwości 44
- 2.2.1. Właściwości 45
- 2.2.2. Własne metody dostępowe 47
- 2.2.3. Układ kodu źródłowego: katalogi i pakiety 48
- 2.3. Kodowanie i dokonywanie wyborów: klasa wyliczeniowa i wyrażenie when 49
- 2.3.1. Deklarowanie klasy wyliczeniowej 49
- 2.3.2. Wyrażenie when i klasy wyliczeniowe 50
- 2.3.3. Wyrażenie when i dowolne obiekty 51
- 2.3.4. Wyrażenie when bez argumentów 52
- 2.3.5. Inteligentne rzutowanie: połączenie sprawdzania i rzutowania typów 53
- 2.3.6. Refaktoryzacja kodu: zamiana if na when 55
- 2.3.7. Bloki kodu w odgałęzieniach wyrażeń if i when 56
- 2.4. Iteracje: pętle while i for 57
- 2.4.1. Pętla while 57
- 2.4.2. Iteracje liczb: zakresy i postępy 57
- 2.4.3. Iterowanie elementów map 59
- 2.4.4. Sprawdzanie przynależności do zakresu i kolekcji za pomocą słowa in 60
- 2.5. Wyjątki w Kotlinie 61
- 2.5.1. Instrukcje try, catch i finally 62
- 2.5.2. Słowo kluczowe try jako wyrażenie 63
- 2.6. Podsumowanie 64
Rozdział 3. Definiowanie i wywoływanie funkcji 65
- 3.1. Tworzenie kolekcji 66
- 3.2. Łatwiejsze wywoływanie funkcji 67
- 3.2.1. Nazwane argumenty 68
- 3.2.2. Domyślne wartości argumentów 68
- 3.2.3. Koniec ze statycznymi klasami pomocniczymi, czyli funkcje i właściwości najwyższego poziomu 70
- 3.3. Dodawanie elementów do zewnętrznych klas: funkcje i właściwości rozszerzające 72
- 3.3.1. Importowanie klas a funkcje rozszerzające 73
- 3.3.2. Wywoływanie funkcji rozszerzających w kodzie Java 74
- 3.3.3. Funkcje pomocnicze jako rozszerzenia 74
- 3.3.4. Nienadpisywalność funkcji rozszerzających 75
- 3.3.5. Właściwości rozszerzające 76
- 3.4. Przetwarzanie kolekcji: funkcjonalność varargs, wywołania infix i obsługa bibliotek 77
- 3.4.1. Rozbudowa interfejsu API kolekcji Java 78
- 3.4.2. Deklarowanie funkcji o dowolnej liczbie argumentów 78
- 3.4.3. Działania w parach: wywołania infix i deklaracje destrukturyzujące 79
- 3.5. Operacje na ciągach znaków i wyrażeniach regularnych 80
- 3.5.1. Dzielenie ciągów znaków 81
- 3.5.2. Wyrażenia regularne i potrójne cudzysłowy 81
- 3.5.3. Potrójne cudzysłowy i wielowierszowe ciągi znaków 83
- 3.6. Wygładzanie kodu: lokalne funkcje i rozszerzenia 84
- 3.7. Podsumowanie 86
Rozdział 4. Klasy, obiekty i interfejsy 89
- 4.1. Definiowanie hierarchii klas 90
- 4.1.1. Interfejsy w Kotlinie 90
- 4.1.2. Modyfikatory open, final (domyślny) i abstract 92
- 4.1.3. Modyfikatory widoczności, domyślny public 94
- 4.1.4. Klasy wewnętrzne i zagnieżdżone (domyślnie) 96
- 4.1.5. Klasy zapieczętowane: definiowanie ograniczonych hierarchii klas 98
- 4.2. Deklarowanie klas z nietrywialnymi konstruktorami i właściwościami 100
- 4.2.1. Inicjowanie klas: konstruktor główny i bloki inicjatora 100
- 4.2.2. Konstruktory dodatkowe i różne sposoby inicjowania klas nadrzędnych 102
- 4.2.3. Implementowanie właściwości zadeklarowanych w interfejsie 104
- 4.2.4. Dostęp do pól za pomocą getterów i setterów 105
- 4.2.5. Zmienianie widoczności metody dostępowej 106
- 4.3. Metody generowane przez kompilator, klasy danych i delegowanie klas 108
- 4.3.1. Metody uniwersalnych obiektów 108
- 4.3.2. Klasy danych i automatyczne generowanie uniwersalnych metod 111
- 4.3.3. Delegowanie klas i słowo kluczowe by 112
- 4.4. Słowo kluczowe object łączące deklarację klasy z utworzeniem jej instancji 114
- 4.4.1. Łatwe tworzenie singletonów poprzez deklarowanie obiektów 114
- 4.4.2. Obiekty towarzyszące: miejsce dla metod wytwórczych i elementów statycznych 116
- 4.4.3. Obiekty towarzyszące jako zwykłe obiekty 118
- 4.4.4. Wyrażenia obiektowe, czyli anonimowe klasy wewnętrzne 121
- 4.5. Podsumowanie 122
Rozdział 5. Wyrażenia lambda 123
- 5.1. Wyrażenia lambda i odwołania do elementów obiektów 123
- 5.1.1. Wprowadzenie do wyrażeń lambda: bloki kodu jako argumenty funkcji 124
- 5.1.2. Lambdy i kolekcje 125
- 5.1.3. Składnia wyrażenia lambda 126
- 5.1.4. Odwołania do zmiennych w bieżącym kontekście 129
- 5.1.5. Odwołania do elementów klas 131
- 5.2. Interfejsy funkcyjne do przetwarzania kolekcji 133
- 5.2.1. Podstawy: filtry i mapy 133
- 5.2.2. Warunki i funkcje all(), any(), count() oraz find() w kolekcjach 135
- 5.2.3. Funkcja groupBy() i konwersja listy na mapę grup 136
- 5.2.4. Funkcja flatMap(), spłaszczanie struktury danych i przetwarzanie zagnieżdżonych kolekcji 137
- 5.3. Leniwe operacje na kolekcjach oraz sekwencje 138
- 5.3.1. Pośrednie i końcowe operacje na sekwencjach 139
- 5.3.2. Tworzenie sekwencji 142
- 5.4. Interfejsy funkcyjne Java 143
- 5.4.1. Umieszczanie wyrażeń lambda w argumentach metod Java 144
- 5.4.2. Konstruktory SAM i jawna konwersja wyrażeń lambda na interfejsy funkcyjne 146
- 5.5. Wyrażenia lambda, odbiorniki oraz funkcje with() i apply() 147
- 5.5.1. Funkcja with() 147
- 5.5.2. Funkcja apply() 149
- 5.6. Podsumowanie 151
Rozdział 6. System typów danych 153
- 6.1. Zerowalność typów danych 153
- 6.1.1. Zerowalne typy danych 154
- 6.1.2. Znaczenie typów danych 156
- 6.1.3. Bezpieczny operator wywołania "?." 157
- 6.1.4. Operator Elvisa "?:" 158
- 6.1.5. Bezpieczne rzutowanie typów: operator "as?" 160
- 6.1.6. Asercja niezerowa "!!" 161
- 6.1.7. Funkcja let() 163
- 6.1.8. Właściwości inicjowane z opóźnieniem 164
- 6.1.9. Rozszerzenia typów zerowalnych 166
- 6.1.10. Zerowalność argumentów typowanych 167
- 6.1.11. Zerowalność typów i Java 168
- 6.2. Typy proste oraz inne typy podstawowe 172
- 6.2.1. Typy proste Int, Boolean i inne 172
- 6.2.2. Zerowalne typy proste Int?, Boolean? i inne 173
- 6.2.3. Przekształcanie liczb 174
- 6.2.4. Typy główne "Any" i "Any?" 176
- 6.2.5. Typ Unit, odpowiednik "void" 177
- 6.2.6. Typ Nothing, czyli "funkcja nigdy nie kończy działania" 178
- 6.3. Kolekcje i tablice 178
- 6.3.1. Zerowalność typów danych i kolekcje 178
- 6.3.2. Kolekcje tylko do odczytu i kolekcje mutowalne 181
- 6.3.3. Kolekcje w Kotlinie i w Javie 182
- 6.3.4. Kolekcje jako typy platformowe 184
- 6.3.5. Tablice obiektów i typów prostych 186
- 6.4. Podsumowanie 189
CZĘŚĆ II. WZBOGACANIE KOTLINA 191
Rozdział 7. Przeciążanie operatorów oraz inne konwencje 193
- 7.1. Przeciążanie operatorów arytmetycznych 194
- 7.1.1. Przeciążanie dwuargumentowych operatorów arytmetycznych 194
- 7.1.2. Przeciążanie złożonych operatorów przypisania 196
- 7.1.3. Przeciążanie operatorów jednoargumentowych 198
- 7.2. Przeciążanie operatorów porównania 199
- 7.2.1. Operatory równości 199
- 7.2.2. Przeciążanie operatorów nierówności: metoda compareTo() 200
- 7.3. Konwencje stosowane w kolekcjach i zakresach 202
- 7.3.1. Dostęp do elementu za pomocą indeksu, metod get() i set() 202
- 7.3.2. Konwencja operatora in 203
- 7.3.3. Metoda rangeTo() 204
- 7.3.4. Konwencja "iterator" w pętli loop 205
- 7.4. Deklaracje destrukturyzujące i metody komponentowe 206
- 7.4.1. Deklaracje destrukturyzujące i pętle 207
- 7.5. Współdzielenie metod dostępowych i delegowanie właściwości 208
- 7.5.1. Podstawy delegowania właściwości 209
- 7.5.2. Korzystanie z delegowanych właściwości: inicjalizacja z opóźnieniem i funkcja lazy 209
- 7.5.3. Implementacja delegowanych właściwości 211
- 7.5.4. Zasady translacji delegowanych właściwości 215
- 7.5.5. Przechowywanie wartości właściwości w mapie 215
- 7.5.6. Delegowane właściwości w bibliotekach 216
- 7.6. Podsumowanie 218
Rozdział 8. Funkcje wysokopoziomowe: wyrażenia lambda jako argumenty oraz wyniki 219
- 8.1. Deklarowanie funkcji wysokopoziomowych 220
- 8.1.1. Typy funkcyjne 220
- 8.1.2. Wywoływanie funkcji podanych w argumentach 221
- 8.1.3. Stosowanie typów funkcyjnych w kodzie Java 222
- 8.1.4. Wartość domyślna i wartość null w argumentach typów funkcyjnych 223
- 8.1.5. Funkcje zawierające w wynikach inne funkcje 226
- 8.1.6. Usuwanie duplikatów kodu za pomocą wyrażeń lambda 227
- 8.2. Funkcje śródwierszowe i wydajność wyrażeń lambda 229
- 8.2.1. Wstawianie kodu funkcji 230
- 8.2.2. Ograniczenia funkcji śródwierszowych 232
- 8.2.3. Wstawianie operacji na kolekcjach 233
- 8.2.4. Kiedy należy stosować funkcje śródwierszowe 234
- 8.2.5. Zarządzanie zasobami za pomocą śródwierszowych wyrażeń lambda 234
- 8.3. Sterowanie realizacją kodu w funkcjach wysokopoziomowych 236
- 8.3.1. Instrukcja return w wyrażeniach lambda: wyjście z nadrzędnej funkcji 236
- 8.3.2. Wyjście z wyrażenia lambda: instrukcja return z etykietą 237
- 8.3.3. Funkcje anonimowe i domyślne wyjścia lokalne 239
- 8.4. Podsumowanie 240
Rozdział 9. Typy generyczne 241
- 9.1. Generyczne argumenty typowane 242
- 9.1.1. Generyczne funkcje i właściwości 243
- 9.1.2. Deklarowanie klas generycznych 244
- 9.1.3. Ograniczenia argumentów typowanych 245
- 9.1.4. Deklarowanie niezerowalnego argumentu typowanego 247
- 9.2. Typy generyczne w działającym kodzie, wymazane i urzeczowione argumenty typowane 248
- 9.2.1. Typy generyczne w działającym kodzie: sprawdzanie i rzutowanie typów 248
- 9.2.2. Deklarowanie funkcji z urzeczowionymi argumentami typowanymi 250
- 9.2.3. Zastępowanie odwołań do klas urzeczowionymi argumentami typowanymi 252
- 9.2.4. Ograniczenia urzeczowionych argumentów typowanych 253
- 9.3. Wariancje, typy generyczne i podtypy 254
- 9.3.1. Idea wariancji i umieszczanie wartości w argumentach funkcji 254
- 9.3.2. Klasy, typy i podtypy 255
- 9.3.3. Kowariancja: zachowanie zależności między podtypami 257
- 9.3.4. Kontrawariancja: odwrotna zależność podtypów 261
- 9.3.5. Wariancja typu w miejscu deklaracji 263
- 9.3.6. Projekcja z gwiazdką: symbol * zamiast argumentu typowanego 266
- 9.4. Podsumowanie 270
Rozdział 10. Adnotacje i refleksja 271
- 10.1. Deklarowanie i stosowanie adnotacji 272
- 10.1.1. Stosowanie adnotacji 272
- 10.1.2. Adres adnotacji 273
- 10.1.3. Dostosowywanie procesu serializacji JSON za pomocą adnotacji 275
- 10.1.4. Deklarowanie adnotacji 277
- 10.1.5. Metaadnotacje: kontrolowanie procesu przetwarzania adnotacji 277
- 10.1.6. Klasy jako argumenty adnotacji 278
- 10.1.7. Klasy generyczne jako argumenty adnotacji 279
- 10.2. Refleksja: badanie obiektów w trakcie działania kodu 280
- 10.2.1. Interfejs API refleksji w Kotlinie: interfejsy KClass, KCallable, KFunction i KProperty 281
- 10.2.2. Serializacja obiektów z wykorzystaniem refleksji 285
- 10.2.3. Dostosowywanie serializacji za pomocą adnotacji 286
- 10.2.4. Analiza danych JSON i deserializacja obiektów 289
- 10.2.5. Ostatni etap deserializacji: wywołanie metody callBy() i utworzenie obiektu za pomocą refleksji 293
- 10.3. Podsumowanie 297
Rozdział 11. Definiowanie języka DSL 299
- 11.1. Od interfejsu API do języka DSL 300
- 11.1.1. Idea języków domenowych 301
- 11.1.2. Wewnętrzny język DSL 302
- 11.1.3. Struktura języka DSL 303
- 11.1.4. Generowanie kodu HTML za pomocą wewnętrznego języka DSL 304
- 11.2. Tworzenie strukturalnego interfejsu API: wyrażenia lambda z odbiornikami w języku DSL 305
- 11.2.1. Wyrażenie lambda z odbiornikiem i typ funkcyjny rozszerzający 305
- 11.2.2. Wyrażenia lambda z odbiornikami w generatorze HTML 309
- 11.2.3. Generatory w Kotlinie, abstrakcje i powtarzalny kod 313
- 11.3. Bardziej elastyczne zagnieżdżanie bloków kodu dzięki konwencji invoke 316
- 11.3.1. Konwencja invoke, czyli obiekty wywoływane tak jak funkcje 316
- 11.3.2. Konwencja invoke i typy funkcyjne 317
- 11.3.3. Konwencja invoke w języku DSL: deklarowanie zależności w narzędziu Gradle 318
- 11.4. Język DSL w praktyce 319
- 11.4.1. Łączenie wywołań infix i asercja should w platformach testowych 319
- 11.4.2. Rozszerzenia typów prostych i przetwarzanie dat 321
- 11.4.3. Funkcje rozszerzające i wewnętrzny język DSL do obsługi zapytań SQL 322
- 11.4.4. Biblioteka Anko i dynamiczne tworzenie interfejsu użytkownika w systemie Android 325
- 11.5. Podsumowanie 327
DODATKI 329
Dodatek A. Kompilowanie projektów Kotlin 331
- A.1. Kompilowanie kodu Kotlin za pomocą narzędzia Gradle 331
- A.1.1. Kompilowanie za pomocą narzędzia Gradle aplikacji dla systemu Android 332
- A.1.2. Kompilowanie projektów wykorzystujących adnotacje 332
- A.2. Kompilowanie kodu Kotlin za pomocą narzędzia Maven 333
- A.3. Kompilowanie kodu Kotlin za pomocą narzędzia Ant 333
Dodatek B. Dokumentowanie kodu Kotlin 335
- B.1. Umieszczanie komentarzy dokumentacyjnych 335
- B.2. Generowanie dokumentacji interfejsu API 336
Dodatek C. Ekosystem Kotlina 339
- C.1. Testowanie kodu 339
- C.2. Wstrzykiwanie zależności 340
- C.3. Serializacja JSON 340
- C.4. Klienty HTTP 340
- C.5. Aplikacje WWW 340
- C.6. Operacje na bazach danych 341
- C.7. Narzędzia i struktury danych 341
- C.8. Aplikacje stacjonarne 341
Skorowidz 343
- Tytuł: Kotlin w akcji
- Autor: Dmitry Jemerov, Svetlana Isakova
- Tytuł oryginału: Kotlin in Action
- Tłumaczenie: Andrzej Watrak
- ISBN: 978-83-283-4721-2, 9788328347212
- Data wydania: 2018-11-26
- Format: Ebook
- Identyfikator pozycji: kotakc
- Wydawca: Helion