Kotlin移動(dòng)應(yīng)用開發(fā)
定 價(jià):99 元
叢書名:移動(dòng)應(yīng)用開發(fā)技術(shù)叢書
- 作者:[德] 彼得·佐默霍夫(Peter Sommerhoff)
- 出版時(shí)間:2020/5/1
- ISBN:9787111650935
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書分為兩個(gè)部分。第壹部分從概述Kotlin語言開始,介紹了Kotlin的基本語言結(jié)構(gòu)、Kotlin中的函數(shù)式編程、Kotlin中的面向?qū)ο、Kotlin與Java的互操作性,以及Kotin的并發(fā)性。第二部分講解了如何使用Kotlin來進(jìn)行Android應(yīng)用程序開發(fā),包括一個(gè)待辦事項(xiàng)應(yīng)用和一個(gè)較為復(fù)雜的為使用者提供營養(yǎng)數(shù)據(jù)的應(yīng)用,以幫助讀者實(shí)踐第壹部分學(xué)到的知識,本書*后講解了如何簡潔地使用Kotlin的語言特性來創(chuàng)建簡單的DSL,以及如何將Java程序遷移到Kotlin。
譯者序
序
前言
第一部分 學(xué)習(xí)Kotlin
第1章 Kotlin簡介2
1.1 Kotlin是什么2
1.2 Kotlin的目標(biāo)和語言特性3
1.3 為什么在Android系統(tǒng)開發(fā)中使用Kotlin4
1.3.1 Android中的Java4
1.3.2 Android中的Kotlin5
1.4 Kotlin與Java 85
1.5 支持的工具與社區(qū)6
1.6 商業(yè)角度6
1.7 誰在使用Kotlin7
1.8 本章小結(jié)8
第2章 走進(jìn)Kotlin9
2.1 Kotlin REPL交互式編程命令行9
2.2 變量和數(shù)據(jù)類型10
2.2.1 變量聲明10
2.2.2 基本數(shù)據(jù)類型11
2.2.3 類型推導(dǎo)12
2.3 條件語句13
2.3.1 將if和when作為語句13
2.3.2 條件表達(dá)式15
2.4 循環(huán)和范圍17
2.4.1 while循環(huán)17
2.4.2 for循環(huán)17
2.5 函數(shù)19
2.5.1 函數(shù)簽名19
2.5.2 單行表達(dá)式函數(shù)的簡寫方式20
2.5.3 main函數(shù)20
2.5.4 參數(shù)默認(rèn)值和指定參數(shù)名稱21
2.5.5 擴(kuò)展函數(shù)22
2.5.6 中綴函數(shù)24
2.5.7 運(yùn)算符函數(shù)25
2.6 空安全26
2.6.1 可空類型26
2.6.2 可空類型的使用27
2.7 相等性檢查29
2.8 異常處理30
2.8.1 異常處理的原則30
2.8.2 Kotlin的異常處理31
2.8.3 Checked異常和Unchecked異常32
2.9 本章小結(jié)33
第3章 Kotlin中的函數(shù)式編程34
3.1 函數(shù)式編程的目的34
3.2 函數(shù)36
3.3 Lambda表達(dá)式37
3.4 高階函數(shù)38
3.5 集合的使用41
3.5.1 集合API在Kotlin與Java中的區(qū)別42
3.5.2 在Kotlin中實(shí)例化集合42
3.5.3 集合的訪問和編輯43
3.5.4 過濾集合44
3.5.5 映射集合44
3.5.6 集合分組45
3.5.7 集合關(guān)聯(lián)46
3.5.8 計(jì)算最小值、最大值,以及和46
3.5.9 集合排序46
3.5.10 折疊集合47
3.5.11 鏈?zhǔn)胶瘮?shù)調(diào)用49
3.6 作用域函數(shù)49
3.6.1 let函數(shù)的使用49
3.6.2 apply函數(shù)的使用50
3.6.3 with函數(shù)的使用51
3.6.4 run函數(shù)的使用52
3.6.5 also函數(shù)的使用54
3.6.6 use函數(shù)的使用54
3.6.7 組合高階函數(shù)55
3.6.8 帶接收者的Lambda56
3.7 惰性序列57
3.7.1 惰性計(jì)算57
3.7.2 使用惰性序列58
3.7.3 惰性序列的性能60
3.8 本章小結(jié)62
第4章 Kotlin中的面向?qū)ο?3
4.1 類和對象的實(shí)例化63
4.2 屬性64
4.2.1 屬性和字段65
4.2.2 getter和setter66
4.2.3 延遲初始化屬性67
4.2.4 委托屬性68
4.2.5 預(yù)定義委托69
4.2.6 委托給map71
4.2.7 使用委托的實(shí)現(xiàn)72
4.3 方法73
4.3.1 擴(kuò)展方法74
4.3.2 嵌套類和內(nèi)部類75
4.4 主構(gòu)造函數(shù)和次構(gòu)造函數(shù)76
4.4.1 主構(gòu)造函數(shù)76
4.4.2 次構(gòu)造函數(shù)77
4.5 繼承和重寫規(guī)則78
4.5.1 接口78
4.5.2 抽象類80
4.5.3 開放類81
4.5.4 重寫規(guī)則81
4.6 類型檢查和轉(zhuǎn)換82
4.6.1 類型檢查82
4.6.2 類型轉(zhuǎn)換82
4.6.3 智能轉(zhuǎn)換83
4.7 可見性84
4.7.1 類或接口中的聲明84
4.7.2 頂級聲明86
4.8 數(shù)據(jù)類86
4.8.1 使用數(shù)據(jù)類87
4.8.2 數(shù)據(jù)類的繼承88
4.9 枚舉89
4.10 密封類91
4.11 對象和伴生93
4.11.1 把對象聲明為單例95
4.11.2 伴生對象95
4.12 泛型97
4.12.1 泛型類和泛型函數(shù)97
4.12.2 協(xié)變和逆變101
4.12.3 聲明處型變104
4.12.4 使用處型變107
4.12.5 受限的類型參數(shù)109
4.12.6 星形投影110
4.13 本章小結(jié)112
第5章 與Java的互操作性113
5.1 在Kotlin中使用Java代碼113
5.1.1 調(diào)用getter和setter114
5.1.2 處理可空屬性115
5.1.3 轉(zhuǎn)義沖突的Java標(biāo)識符119
5.1.4 調(diào)用可變參數(shù)方法120
5.1.5 使用操作符120
5.1.6 使用SAM類型121
5.1.7 關(guān)于互操作性更進(jìn)一步的考慮121
5.2 在Java中使用Kotlin代碼122
5.2.1 訪問屬性122
5.2.2 將屬性作為字段公開124
5.2.3 使用文件級聲明125
5.2.4 調(diào)用擴(kuò)展函數(shù)126
5.2.5 訪問靜態(tài)成員127
5.2.6 生成重載方法129
5.2.7 使用密封類和數(shù)據(jù)類130
5.2.8 可見性131
5.2.9 獲取KClass132
5.2.10 處理簽名沖突132
5.2.11 使用內(nèi)聯(lián)函數(shù)133
5.2.12 異常處理134
5.2.13 使用可變類型135
5.2.14 Nothing類型136
5.3 互操作的最佳實(shí)踐137
5.3.1 寫出對Kotlin友好的Java代碼137
5.3.2 寫出對Java友好的Kotlin代碼137
5.4 本章小結(jié)138
第6章 Kotlin中的并發(fā)140
6.1 并發(fā)140
6.1.1 普遍難題142
6.1.2 最先進(jìn)的解決方案143
6.2 Kotlin中的協(xié)程146
6.2.1 引入?yún)f(xié)程146
6.2.2 基本概念147
6.2.3 掛起函數(shù)147
6.2.4 協(xié)程構(gòu)建器150
6.2.5 生成器169
6.2.6 actors和channels171
6.2.7 并發(fā)樣式178
6.2.8 協(xié)程實(shí)踐178
6.2.9 內(nèi)部實(shí)現(xiàn)183
6.3 本章小結(jié)185
第二部分 使用Kotlin進(jìn)行Android開發(fā)
第7章 使用Kotlin進(jìn)行Android應(yīng)用程序開發(fā):Kudoo App188
7.1 在Android上配置Kotlin188
7.1.1 在Android Studio上使用Kotlin188
7.1.2 自動(dòng)生成Gradle配置188
7.1.3 修改Gradle配置190
7.1.4 使用注解處理器191
7.1.5 把Java代碼轉(zhuǎn)換成Kotlin192
7.2 編寫待辦事項(xiàng)列表應(yīng)用Kudoo192
7.2.1 創(chuàng)建項(xiàng)目193
7.2.2 添加RecyclerView195
7.2.3 添加Room數(shù)據(jù)庫203
7.2.4 使用ViewModel208
7.2.5 集成LiveData212
7.2.6 添加新的待辦事項(xiàng)214
7.2.7 啟用檢查待辦事項(xiàng)218
7.3 本章小結(jié)219
第8章 使用Kotlin進(jìn)行Android應(yīng)用程序開發(fā):Nutrilicious221
8.1 新建并配置項(xiàng)目222
8.2 為主頁面添加RecyclerView223
8.2.1 為MainActivity布局223
8.2.2 為RecyclerView的項(xiàng)目布局224
8.2.3 實(shí)現(xiàn)Food模型226
8.2.4 實(shí)現(xiàn)RecyclerView的適配器226
8.2.5 在MainActivity中添加RecyclerView228
8.3 調(diào)用Nutrition的API從USDA中拉取數(shù)據(jù)230
8.3.1 使用Retrofit230
8.3.2 執(zhí)行API請求235
8.4 映射JSON數(shù)據(jù)和領(lǐng)域類236
8.4.1 將JSON數(shù)據(jù)映射到數(shù)據(jù)傳輸對象237
8.4.2 將數(shù)據(jù)傳輸對象映射為model類239
8.5 在搜索邏輯中使用ViewModel241
8.6 增加搜索食品功能243
8.7 介紹Fragment I:實(shí)現(xiàn)搜索Fragment246
8.8 介紹Fragment II:實(shí)現(xiàn)收藏Fragment254
8.9 在Room數(shù)據(jù)庫中存儲用戶收藏食品數(shù)據(jù)258
8.10 從USDA食品報(bào)告API中拉取營養(yǎng)詳情數(shù)據(jù)265
8.11 集成詳情頁270
8.12 在數(shù)據(jù)庫中存儲食品詳情277
8.13 為可操作的數(shù)據(jù)添加RDI282
8.14 優(yōu)化用戶體驗(yàn)286
8.14.1 在搜索頁面增加結(jié)果為空時(shí)的說明286
8.14.2 在詳情頁增加進(jìn)度說明287
8.15 本章小結(jié)288
第9章 Kotlin DSL289
9.1 DSL簡介289
9.1.1 什么是DSL289
9.1.2 優(yōu)點(diǎn)和缺點(diǎn)290
9.2 在Kotlin中創(chuàng)建DSL292
9.2.1 使用DSL來構(gòu)建復(fù)雜對象292
9.2.2 通過構(gòu)建器來保持不變性294
9.2.3 深入嵌套296
9.2.4 @DslMarker注解簡介298
9.2.5 語言特性299
9.3 DSL在Android布局中的應(yīng)用—使用Anko301
9.3.1 在代碼中創(chuàng)建布局301
9.3.2 Anko依賴302
9.3.3 使用Anko創(chuàng)建布局303
9.3.4 添加布局參數(shù)303
9.3.5 將Kudoo中的AddTodoActivity的布局遷移到Anko布局304
9.3.6 增加自定義view306
9.3.7 比較Anko布局和XML布局307
9.4 DSL在Gradle構(gòu)建腳本中的應(yīng)用308
9.4.1 將項(xiàng)目Nutrilicious遷移到Gradle Kotlin DSL308
9.4.2 在Gradle中使用buildSrc313
9.4.3 優(yōu)點(diǎn)和缺點(diǎn)314
9.5 本章小結(jié)315
第10章 遷移到Kotlin316
10.1 軟件中的移植316
10.2 引領(lǐng)改變317
10.2.1 獲得認(rèn)可318
10.2.2 知識分享319
10.3 部分或整體遷移320
10.3.1 部分遷移320
10.3.2 整體遷移321
10.4 從何處開始322
10.4.1 測試代碼322
10.4.2 生產(chǎn)代碼323
10.4.3 寵物程序323
10.4.4 制定計(jì)劃324
10.5 工具支持325
10.5.1 Java-to-Kotlin轉(zhuǎn)換器325
10.5.2 調(diào)整自動(dòng)轉(zhuǎn)換的代碼326
10.6 本章小結(jié)327
附錄 更多資源329
術(shù)語表332