Kotlin移動(dòng)應(yīng)用開(kāi)發(fā)
定 價(jià):99 元
叢書(shū)名:移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)叢書(shū)
- 作者:[德] 彼得·佐默霍夫(Peter Sommerhoff)
- 出版時(shí)間:2020/5/1
- ISBN:9787111650935
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TN929.53
- 頁(yè)碼:0
- 紙張:
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)分為兩個(gè)部分。第壹部分從概述Kotlin語(yǔ)言開(kāi)始,介紹了Kotlin的基本語(yǔ)言結(jié)構(gòu)、Kotlin中的函數(shù)式編程、Kotlin中的面向?qū)ο、Kotlin與Java的互操作性,以及Kotin的并發(fā)性。第二部分講解了如何使用Kotlin來(lái)進(jìn)行Android應(yīng)用程序開(kāi)發(fā),包括一個(gè)待辦事項(xiàng)應(yīng)用和一個(gè)較為復(fù)雜的為使用者提供營(yíng)養(yǎng)數(shù)據(jù)的應(yīng)用,以幫助讀者實(shí)踐第壹部分學(xué)到的知識(shí),本書(shū)*后講解了如何簡(jiǎn)潔地使用Kotlin的語(yǔ)言特性來(lái)創(chuàng)建簡(jiǎn)單的DSL,以及如何將Java程序遷移到Kotlin。
譯者序
序
前言
第一部分 學(xué)習(xí)Kotlin
第1章 Kotlin簡(jiǎn)介2
1.1 Kotlin是什么2
1.2 Kotlin的目標(biāo)和語(yǔ)言特性3
1.3 為什么在Android系統(tǒng)開(kāi)發(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 誰(shuí)在使用Kotlin7
1.8 本章小結(jié)8
第2章 走進(jìn)Kotlin9
2.1 Kotlin REPL交互式編程命令行9
2.2 變量和數(shù)據(jù)類(lèi)型10
2.2.1 變量聲明10
2.2.2 基本數(shù)據(jù)類(lèi)型11
2.2.3 類(lèi)型推導(dǎo)12
2.3 條件語(yǔ)句13
2.3.1 將if和when作為語(yǔ)句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ù)的簡(jiǎn)寫(xiě)方式20
2.5.3 main函數(shù)20
2.5.4 參數(shù)默認(rèn)值和指定參數(shù)名稱(chēng)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 可空類(lèi)型26
2.6.2 可空類(lèi)型的使用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 集合的訪(fǎng)問(wèn)和編輯43
3.5.4 過(guò)濾集合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 類(lèi)和對(duì)象的實(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 嵌套類(lèi)和內(nèi)部類(lè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 繼承和重寫(xiě)規(guī)則78
4.5.1 接口78
4.5.2 抽象類(lèi)80
4.5.3 開(kāi)放類(lèi)81
4.5.4 重寫(xiě)規(guī)則81
4.6 類(lèi)型檢查和轉(zhuǎn)換82
4.6.1 類(lèi)型檢查82
4.6.2 類(lèi)型轉(zhuǎn)換82
4.6.3 智能轉(zhuǎn)換83
4.7 可見(jiàn)性84
4.7.1 類(lèi)或接口中的聲明84
4.7.2 頂級(jí)聲明86
4.8 數(shù)據(jù)類(lèi)86
4.8.1 使用數(shù)據(jù)類(lèi)87
4.8.2 數(shù)據(jù)類(lèi)的繼承88
4.9 枚舉89
4.10 密封類(lèi)91
4.11 對(duì)象和伴生93
4.11.1 把對(duì)象聲明為單例95
4.11.2 伴生對(duì)象95
4.12 泛型97
4.12.1 泛型類(lèi)和泛型函數(shù)97
4.12.2 協(xié)變和逆變101
4.12.3 聲明處型變104
4.12.4 使用處型變107
4.12.5 受限的類(lèi)型參數(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)識(shí)符119
5.1.4 調(diào)用可變參數(shù)方法120
5.1.5 使用操作符120
5.1.6 使用SAM類(lèi)型121
5.1.7 關(guān)于互操作性更進(jìn)一步的考慮121
5.2 在Java中使用Kotlin代碼122
5.2.1 訪(fǎng)問(wèn)屬性122
5.2.2 將屬性作為字段公開(kāi)124
5.2.3 使用文件級(jí)聲明125
5.2.4 調(diào)用擴(kuò)展函數(shù)126
5.2.5 訪(fǎng)問(wèn)靜態(tài)成員127
5.2.6 生成重載方法129
5.2.7 使用密封類(lèi)和數(shù)據(jù)類(lèi)130
5.2.8 可見(jiàn)性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 使用可變類(lèi)型135
5.2.14 Nothing類(lèi)型136
5.3 互操作的最佳實(shí)踐137
5.3.1 寫(xiě)出對(duì)Kotlin友好的Java代碼137
5.3.2 寫(xiě)出對(duì)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開(kāi)發(fā)
第7章 使用Kotlin進(jìn)行Android應(yīng)用程序開(kāi)發(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ě)待辦事項(xiàng)列表應(yīng)用Kudoo192
7.2.1 創(chuàng)建項(xiàng)目193
7.2.2 添加RecyclerView195
7.2.3 添加Room數(shù)據(jù)庫(kù)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)用程序開(kāi)發(fā):Nutrilicious221
8.1 新建并配置項(xiàng)目222
8.2 為主頁(yè)面添加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請(qǐng)求235
8.4 映射JSON數(shù)據(jù)和領(lǐng)域類(lèi)236
8.4.1 將JSON數(shù)據(jù)映射到數(shù)據(jù)傳輸對(duì)象237
8.4.2 將數(shù)據(jù)傳輸對(duì)象映射為model類(lèi)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ù)庫(kù)中存儲(chǔ)用戶(hù)收藏食品數(shù)據(jù)258
8.10 從USDA食品報(bào)告API中拉取營(yíng)養(yǎng)詳情數(shù)據(jù)265
8.11 集成詳情頁(yè)270
8.12 在數(shù)據(jù)庫(kù)中存儲(chǔ)食品詳情277
8.13 為可操作的數(shù)據(jù)添加RDI282
8.14 優(yōu)化用戶(hù)體驗(yàn)286
8.14.1 在搜索頁(yè)面增加結(jié)果為空時(shí)的說(shuō)明286
8.14.2 在詳情頁(yè)增加進(jìn)度說(shuō)明287
8.15 本章小結(jié)288
第9章 Kotlin DSL289
9.1 DSL簡(jiǎn)介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來(lái)構(gòu)建復(fù)雜對(duì)象292
9.2.2 通過(guò)構(gòu)建器來(lái)保持不變性294
9.2.3 深入嵌套296
9.2.4 @DslMarker注解簡(jiǎn)介298
9.2.5 語(yǔ)言特性299
9.3 DSL在Android布局中的應(yīng)用—使用Anko301
9.3.1 在代碼中創(chuàng)建布局301
9.3.2 Anko依賴(lài)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 知識(shí)分享319
10.3 部分或整體遷移320
10.3.1 部分遷移320
10.3.2 整體遷移321
10.4 從何處開(kāi)始322
10.4.1 測(cè)試代碼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ù)語(yǔ)表332