Kategorien
E-Books
-
Wirtschaft
- Bitcoin
- Geschäftsfrau
- Coaching
- Controlling
- E-Business
- Ökonomie
- Finanzen
- Börse und Investitionen
- Persönliche Kompetenzen
- Computer im Büro
- Kommunikation und Verhandlungen
- Kleines Unternehmen
- Marketing
- Motivation
- Multimedia-Training
- Immobilien
- Überzeugung und NLP
- Steuern
- Sozialpolitik
- Handbȕcher
- Präsentationen
- Führung
- Public Relation
- Berichte, Analysen
- Geheimnis
- Social Media
- Verkauf
- Start-up
- Ihre Karriere
- Management
- Projektmanagement
- Personal (HR)
-
Für Kinder
-
Für Jugendliche
-
Bildung
-
Enzyklopädien, Wörterbücher
-
E-Presse
- Architektura i wnętrza
- Biznes i Ekonomia
- Haus und Garten
- E-Business
- Finanzen
- Persönliche Finanzen
- Unternehmen
- Fotografie
- Informatik
- HR und Gehaltsabrechnung
- Computer, Excel
- Buchhaltung
- Kultur und Literatur
- Wissenschaftlich und akademisch
- Umweltschutz
- meinungsbildend
- Bildung
- Steuern
- Reisen
- Psychologie
- Religion
- Landwirtschaft
- Buch- und Pressemarkt
- Transport und Spedition
- Gesundheit und Schönheit
-
Geschichte
-
Informatik
- Office-Programme
- Datenbank
- Bioinformatik
- IT Branche
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronik
- Digitale Fotografie
- Computergrafik
- Spiele
- Hacking
- Hardware
- IT w ekonomii
- Wissenschaftliche Pakete
- Schulbücher
- Computergrundlagen
- Programmierung
- Mobile-Programmierung
- Internet-Server
- Computernetzwerke
- Start-up
- Betriebssysteme
- Künstliche Inteligenz
- Technik für Kinder
- Webmaster
-
Andere
-
Fremdsprachen lernen
-
Kultur und Kunst
-
Lektüre
-
Literatur
- Anthologien
- Ballade
- Biografien und Autobiografien
- Für Erwachsene
- Drama
- Tagebücher, Memoiren, Briefe
- Epos
- Essay
- Science Fiction
- Felietonys
- Fiktion
- Humor, Satire
- Andere
- Klassisch
- Krimi
- Sachbücher
- Belletristik
- Mity i legendy
- Nobelpreisträger
- Kurzgeschichten
- Gesellschaftlich
- Okultyzm i magia
- Erzählung
- Erinnerungen
- Reisen
- Gedicht
- Poesie
- Politik
- Populärwissenschaftlich
- Roman
- Historischer Roman
- Prosa
- Abenteuer
- Journalismus
- Reportage
- Romans i literatura obyczajowa
- Sensation
- Thriller, Horror
- Interviews und Erinnerungen
-
Naturwissenschaften
-
Sozialwissenschaften
-
Schulbücher
-
Populärwissenschaft und akademisch
- Archäologie
- Bibliotekoznawstwo
- Filmwissenschaft
- Philologie
- Polnische Philologie
- Philosophie
- Finanse i bankowość
- Erdkunde
- Wirtschaft
- Handel. Weltwirtschaft
- Geschichte und Archäologie
- Kunst- und Architekturgeschichte
- Kulturwissenschaft
- Linguistik
- Literaturwissenschaft
- Logistik
- Mathematik
- Medizin
- Geisteswissenschaften
- Pädagogik
- Lehrmittel
- Populärwissenschaftlich
- Andere
- Psychologie
- Soziologie
- Theatrologie
- Teologie
- Theorien und Wirtschaftswissenschaften
- Transport i spedycja
- Sportunterricht
- Zarządzanie i marketing
-
Handbȕcher
-
Spielanleitungen
-
Professioneller und fachkundige Leitfaden
-
Jura
- Sicherheit und Gesundheit am Arbeitsplatz
- Geschichte
- Verkehrsregeln. Führerschein
- Rechtswissenschaften
- Gesundheitswesen
- Allgemeines. Wissenskompendium
- akademische Bücher
- Andere
- Bau- und Wohnungsrecht
- Zivilrecht
- Finanzrecht
- Wirtschaftsrecht
- Wirtschafts- und Handelsrecht
- Strafrecht
- Strafrecht. Kriminelle Taten. Kriminologie
- Internationales Recht
- Internationales und ausländisches Recht
- Gesundheitsschutzgesetz
- Bildungsrecht
- Steuerrecht
- Arbeits- und Sozialversicherungsrecht
- Öffentliches, Verfassungs- und Verwaltungsrecht
- Familien- und Vormundschaftsrecht
- Agrarrecht
- Sozialrecht, Arbeitsrecht
- EU-Recht
- Industrie
- Agrar- und Umweltschutz
- Wörterbücher und Enzyklopädien
- Öffentliche Auftragsvergabe
- Management
-
Führer und Reisen
- Afrika
- Alben
- Südamerika
- Mittel- und Nordamerika
- Australien, Neuseeland, Ozeanien
- Österreich
- Asien
- Balkan
- Naher Osten
- Bulgarien
- China
- Kroatien
- Tschechische Republik
- Dänemark
- Ägypten
- Estland
- Europa
- Frankreich
- Berge
- Griechenland
- Spanien
- Niederlande
- Island
- Litauen
- Lettland
- Mapy, Plany miast, Atlasy
- Miniführer
- Deutschland
- Norwegen
- Aktive Reisen
- Polen
- Portugal
- Andere
- Russland
- Rumänien
- Slowakei
- Slowenien
- Schweiz
- Schweden
- Welt
- Türkei
- Ukraine
- Ungarn
- Großbritannien
- Italien
-
Psychologie
- Lebensphilosophien
- Kompetencje psychospołeczne
- zwischenmenschliche Kommunikation
- Mindfulness
- Allgemeines
- Überzeugung und NLP
- Akademische Psychologie
- Psychologie von Seele und Geist
- Arbeitspsychologie
- Relacje i związki
- Elternschafts- und Kinderpsychologie
- Problemlösung
- Intellektuelle Entwicklung
- Geheimnis
- Sexualität
- Verführung
- Aussehen ind Image
- Lebensphilosophien
-
Religion
-
Sport, Fitness, Diäten
-
Technik und Mechanik
Hörbücher
-
Wirtschaft
- Bitcoin
- Geschäftsfrau
- Coaching
- Controlling
- E-Business
- Ökonomie
- Finanzen
- Börse und Investitionen
- Persönliche Kompetenzen
- Kommunikation und Verhandlungen
- Kleines Unternehmen
- Marketing
- Motivation
- Immobilien
- Überzeugung und NLP
- Steuern
- Handbȕcher
- Präsentationen
- Führung
- Public Relation
- Geheimnis
- Social Media
- Verkauf
- Start-up
- Ihre Karriere
- Management
- Projektmanagement
- Personal (HR)
-
Für Kinder
-
Für Jugendliche
-
Bildung
-
Enzyklopädien, Wörterbücher
-
Geschichte
-
Informatik
-
Andere
-
Fremdsprachen lernen
-
Kultur und Kunst
-
Lektüre
-
Literatur
- Anthologien
- Ballade
- Biografien und Autobiografien
- Für Erwachsene
- Drama
- Tagebücher, Memoiren, Briefe
- Epos
- Essay
- Science Fiction
- Felietonys
- Fiktion
- Humor, Satire
- Andere
- Klassisch
- Krimi
- Sachbücher
- Belletristik
- Mity i legendy
- Nobelpreisträger
- Kurzgeschichten
- Gesellschaftlich
- Okultyzm i magia
- Erzählung
- Erinnerungen
- Reisen
- Poesie
- Politik
- Populärwissenschaftlich
- Roman
- Historischer Roman
- Prosa
- Abenteuer
- Journalismus
- Reportage
- Romans i literatura obyczajowa
- Sensation
- Thriller, Horror
- Interviews und Erinnerungen
-
Naturwissenschaften
-
Sozialwissenschaften
-
Populärwissenschaft und akademisch
- Archäologie
- Philosophie
- Wirtschaft
- Handel. Weltwirtschaft
- Geschichte und Archäologie
- Kunst- und Architekturgeschichte
- Kulturwissenschaft
- Literaturwissenschaft
- Mathematik
- Medizin
- Geisteswissenschaften
- Pädagogik
- Lehrmittel
- Populärwissenschaftlich
- Andere
- Psychologie
- Soziologie
- Teologie
- Zarządzanie i marketing
-
Handbȕcher
-
Professioneller und fachkundige Leitfaden
-
Jura
-
Führer und Reisen
-
Psychologie
- Lebensphilosophien
- zwischenmenschliche Kommunikation
- Mindfulness
- Allgemeines
- Überzeugung und NLP
- Akademische Psychologie
- Psychologie von Seele und Geist
- Arbeitspsychologie
- Relacje i związki
- Elternschafts- und Kinderpsychologie
- Problemlösung
- Intellektuelle Entwicklung
- Geheimnis
- Sexualität
- Verführung
- Aussehen ind Image
- Lebensphilosophien
-
Religion
-
Sport, Fitness, Diäten
-
Technik und Mechanik
Videokurse
-
Datenbank
-
Big Data
-
Biznes, ekonomia i marketing
-
Cybersicherheit
-
Data Science
-
DevOps
-
Für Kinder
-
Elektronik
-
Grafik / Video / CAX
-
Spiele
-
Microsoft Office
-
Entwicklungstools
-
Programmierung
-
Persönliche Entwicklung
-
Computernetzwerke
-
Betriebssysteme
-
Softwaretest
-
Mobile Geräte
-
UX/UI
-
Web development
-
Management
Podcasts
- E-Books
- Programmierung
- Java
- Kotlin w akcji
Details zum E-Book
Kotlin w akcji
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
- Titel: Kotlin w akcji
- Autor: Dmitry Jemerov, Svetlana Isakova
- Originaler Titel: Kotlin in Action
- Übersetzung: Andrzej Watrak
- ISBN: 978-83-283-4721-2, 9788328347212
- Veröffentlichungsdatum: 2018-11-26
- Format: E-book
- Artikelkennung: kotakc
- Verleger: Helion