發表於2024-12-26
《Kotlin 實戰》教會你使用 Kotlin 語言來開發達到産品級品質的應用。《Kotlin 實戰》為具備一定 Java 經驗的開發者編寫,包含瞭豐富的示例,和大多數介紹編程語言的書籍相比更加深入,涵蓋瞭非常有趣的話題,例如怎樣構建使用自然語言語法的 DSL。兩位作者是 Kotlin 的核心開發者,所以你完全可以相信《Kotlin 實戰》中細枝末節的內容都無比地精確。
● 在 JVM 上進行函數式編程
● 編寫整潔並符閤語義習慣的代碼
● 結閤運用 Kotlin 和 Java
● 領域特定語言
《Kotlin實戰》將從語言的基本特性開始,逐漸覆蓋其更多的高級特性,尤其注重講解如何將 Koltin 集成到已有 Java 工程實踐及其背後的原理。《Kotlin實戰》分為兩個部分。第一部分講解如何開始使用 Kotlin 現有的庫和API,包括基本語法、擴展函數和擴展屬性、數據類和伴生對象、lambda 錶達式,以及數據類型係統(著重講解瞭可空性和集閤的概念)。第二部分教你如何使用 Kotlin 構建自己的 API,以及一些深層次特性——約定和委托屬性、高階函數、泛型、注解和反射,以及領域特定語言的構建。本書適閤廣大移動開發者及入門學習者,尤其是緊跟主流趨勢的前沿探索者。
原著作者簡介
本書作者JetBrains為Kotlin的核心開發者,DmitryJemerov從2003年起就在JetBrains工作並參與瞭許多産品的開發,包括IntelliJIDEA、PyCharm和WebStorm。他是Kotlin早的貢獻者之一,創建瞭初版本的KotlinJVM字節碼生成器,並且還在世界各地的活動上做瞭很多關於Kotlin的演示。之前他帶領瞭進軍KotlinIntelliJIDEA插件開發的團隊。SvetlanaIsakova從2011年成為Kotlin團隊的一員。她從事編譯器類型推導和重載解析該係統的工作。現在她是一名技術布道者,在各種會議上進行Kotlin相關討論並從事Kotlin在綫課程的相關工作。
譯者簡介
覃宇,ThoughtWorks高級谘詢師,10餘年移動應用開發經驗,Android技術專傢,曾為AOSP貢獻過測試用例;目前專注於移動應用的架構設計、自動化測試以及持續交付。
羅麗,高級軟件工程師,移動技術開發顧問,擁有豐富的軟件開發經驗,熟悉ReactNative,Android,iOS等多種開發技術。目前任職於ThoughtWorks海外事業部,曾在多個大型移動應用項目中擔任技術顧問。
李思陽,ThoughtWorks谘詢師,移動開發工程師。熟悉Android、MobileWeb相關技術,有著豐富的移動應用開發經驗,在移動應用體驗和兼容性相關領域有獨特的見解;長期關注Android領域相關技術動嚮。
蔣揚海,ThoughtWorks移動開發谘詢師,深耕Android開發多年,應用開發經驗豐富,對Android開發領域的技術有廣泛的涉獵,對Android技術動嚮有著敏銳的洞察力。
開發者想完成他們的工作——同時越省事越好。使用 Kotlin 編碼就意味著省事。Kotlin 編程語言提供瞭賦有錶現力的語法,強大直觀的類型係統和美妙的工具支持,還有與現存 Java 代碼、庫及框架無縫的互操作性。Kotlin 可以被編譯成 Java 字節碼,所以你可以在所有使用 Java 的地方使用它,包括 Android 在內。藉助高效的編譯器和標準庫,Kotlin 在運行時幾乎不用承受任何額外開銷。
——kotlin核心開發者
“既闡釋瞭高級概念,也提供瞭足夠深入的細節。”
— 摘自 Kotlin 首席設計師 Andrey Breslav 作的序
“這本書保持瞭 Manning 實戰係列的水準,滿足瞭你快速提高生成力的所有需要。”
— Kevin Orr Sumus Solutions
“有這本書指導你,Kotlin 學起來有趣又簡單!”
— Filip Pravica Info.nl
“寫得非常全麵,非常好,淺顯易懂。”
— Jason Lee NetSuite
第 1 部分 Kotlin 簡介1
1 Kotlin :定義和目的3
1.1 Kotlin 初體驗3
1.2 Kotlin 的主要特徵4
1.2.1 目標平颱 :服務器端、Android 及任何 Java 運行的地方4
1.2.2 靜態類型5
1.2.3 函數式和麵嚮對象6
1.2.4 免費並開源7
1.3 Kotlin 應用8
1.3.1 服務器端的 Kotlin8
1.3.2 Android 上的 Kotlin9
1.4 Kotlin 的設計哲學10
1.4.1 務實10
1.4.2 簡潔11
1.4.3 安全12
1.4.4 互操作性13
1.5 使用 Kotlin 工具14
1.5.1 編譯 Kotlin 代碼14
1.5.2 IntelliJ IDEA 和 Android Studio 插件15
1.5.3 交互式 shell15
1.5.4 Eclipse 插件15
1.5.5 在綫 playground15
1.5.6 Java 到 Kotlin 的轉換器16
1.6 小結16
2 Kotlin 基礎17
2.1 基本要素 :函數和變量17
2.1.1 Hello,world!18
2.1.2 函數18
2.1.3 變量20
2.1.4 更簡單的字符串格式化 :字符串模闆22
2.2 類和屬性23
2.2.1 屬性24
2.2.2 自定義訪問器25
2.2.3 Kotlin 源碼布局 :目錄和包26
2.3 錶示和處理選擇 :枚舉和“when”28
2.3.1 聲明枚舉類28
2.3.2 使用“when”處理枚舉類29
2.3.3 在“when”結構中使用任意對象30
2.3.4 使用不帶參數的“when”31
2.3.5 智能轉換 :閤並類型檢查和轉換32
2.3.6 重構 :用“when”代替“if”34
2.3.7 代碼塊作為“if”和“when”的分支35
2.4 迭代事物 :“while”循環和“for”循環36
2.4.1 “while”循環36
2.4.2 迭代數字 :區間和數列37
2.4.3 迭代 map38
2.4.4 使用“in”檢查集閤和區間的成員39
2.5 Kotlin 中的異常41
2.5.1 “try”“catch”和“finally”41
2.5.2 “try”作為錶達式42
2.6 小結44
3 函數的定義與調用45
3.1 在 Kotlin 中創建集閤45
3.2 讓函數更好調用47
3.2.1 命名參數48
3.2.2 默認參數值49
3.2.3 消除靜態工具類 :頂層函數和屬性50
3.3 給彆人的類添加方法 :擴展函數和屬性53
3.3.1 導入和擴展函數54
3.3.2 從 Java 中調用擴展函數54
3.3.3 作為擴展函數的工具函數55
3.3.4 不可重寫的擴展函數56
3.3.5 擴展屬性58
3.4 處理集閤 :可變參數、中綴調用和庫的支持59
3.4.1 擴展 Java 集閤的 API59
3.4.2 可變參數 :讓函數支持任意數量的參數60
3.4.3 鍵值對的處理 :中綴調用和解構聲明60
3.5 字符串和正則錶達式的處理62
3.5.1 分割字符串62
3.5.2 正則錶達式和三重引號的字符串63
3.5.3 多行三重引號的字符串64
3.6 讓你的代碼更整潔 :局部函數和擴展66
3.7 小結68
4 類、對象和接口69
4.1 定義類繼承結構70
4.1.1 Kotlin 中的接口70
4.1.2 open、final 和 abstract 修飾符 :默認為 final72
4.1.3 可見性修飾符 :默認為 public75
4.1.4 內部類和嵌套類 :默認是嵌套類76
4.1.5 密封類 :定義受限的類繼承結構79
4.2 聲明一個帶非默認構造方法或屬性的類80
4.2.1 初始化類 :主構造方法和初始化語句塊80
4.2.2 構造方法 :用不同的方式來初始化父類83
4.2.3 實現在接口中聲明的屬性85
4.2.4 通過 getter 或 setter 訪問支持字段87
4.2.5 修改訪問器的可見性88
4.3 編譯器生成的方法 :數據類和類委托89
4.3.1 通用對象方法89
4.3.2 數據類 :自動生成通用方法的實現92
4.3.3 類委托 :使用“by”關鍵字93
4.4 “object”關鍵字 :將聲明一個類與創建一個實例結閤起來95
4.4.1 對象聲明 :創建單例易如反掌95
4.4.2 伴生對象 :工廠方法和靜態成員的地盤98
4.4.3 作為普通對象使用的伴生對象100
4.4.4 對象錶達式 :改變寫法的匿名內部類102
4.5 小結104
5 Lambda 編程105
5.1 Lambda 錶達式和成員引用105
5.1.1 Lambda 簡介 :作為函數參數的代碼塊106
5.1.2 Lambda 和集閤107
5.1.3 Lambda 錶達式的語法108
5.1.4 在作用域中訪問變量111
5.1.5 成員引用114
5.2 集閤的函數式 API116
5.2.1 基礎 :filter 和 map116
5.2.2 “all”“any”“count”和“find”: 對集閤應用判斷式118
5.2.3 groupBy :把列錶轉換成分組的 map119
5.2.4 flatMap 和 flatten :處理嵌套集閤中的元素120
5.3 惰性集閤操作 :序列121
5.3.1 執行序列操作 :中間和末端操作123
5.3.2 創建序列125
5.4 使用 Java 函數式接口126
5.4.1 把 lambda 當作參數傳遞給 Java 方法127
5.4.2 SAM 構造方法 :顯式地把 lambda 轉換成函數式接口129
5.5 帶接收者的 lambda :“with”與“apply”131
5.5.1 “with”函數131
5.5.2 “apply”函數133
5.6 小結135
6 Kotlin 的類型係統137
6.1 可空性137
6.1.1 可空類型138
6.1.2 類型的含義140
6.1.3 安全調用運算符 :“?:”141
6.1.4 Elvis 運算符 :“?:”143
6.1.5 安全轉換 :“as?”145
6.1.6 非空斷言 :“!!”146
6.1.7 “let”函數148
6.1.8 延遲初始化的屬性149
6.1.9 可空類性的擴展151
6.1.10 類型參數的可空性153
6.1.11 可空性和 Java153
6.2 基本數據類型和其他基本類型157
6.2.1 基本數據類型 :Int、Boolean 及其他158
6.2.2 可空的基本數據類型 :Int?、Boolean? 及其他159
6.2.3 數字轉換160
6.2.4 “Any”和“Any?”:根類型162
6.2.5 Unit 類型 :Kotlin 的“void”163
6.2.6 Nothing 類型 :“這個函數永不返迴”164
6.3 集閤與數組164
6.3.1 可空性和集閤165
6.3.2 隻讀集閤與可變集閤167
6.3.3 Kotlin 集閤和 Java168
6.3.4 作為平颱類型的集閤171
6.3.5 對象和基本數據類型的數組173
6.4 小結175
第 2 部分 擁抱 Kotlin177
7 運算符重載及其他約定179
7.1 重載算術運算符180
7.1.1 重載二元算術運算180
7.1.2 重載復閤賦值運算符183
7.1.3 重載一元運算符184
7.2 重載比較運算符186
7.2.1 等號運算符 :“equals"186
7.2.2 排序運算符 :compareTo187
7.3 集閤與區間的約定188
7.3.1 通過下標來訪問元素 :“get”和“set”188
7.3.2 “in”的約定190
7.3.3 rangeTo 的約定191
7.3.4 在“for”循環中使用“iterator”的約定192
7.4 解構聲明和組件函數193
7.4.1 解構聲明和循環194
7.5 重用屬性訪問的邏輯 :委托屬性195
7.5.1 委托屬性的基本操作196
7.5.2 使用委托屬性 :惰性初始化和“by lazy()”197
7.5.3 實現委托屬性198
7.5.4 委托屬性的變換規則202
7.5.5 在 map 中保存屬性值203
7.5.6 框架中的委托屬性204
7.6 小結205
8 高階函數 :Lambda 作為形參和返迴值207
8.1 聲明高階函數207
8.1.1 函數類型208
8.1.2 調用作為參數的函數209
8.1.3 在 Java 中使用函數類211
8.1.4 函數類型的參數默認值和 null 值212
8.1.5 返迴函數的函數214
8.1.6 通過 lambda 去除重復代碼216
8.2 內聯函數 :消除 lambda 帶來的運行時開銷218
8.2.1 內聯函數如何運作219
8.2.2 內聯函數的限製221
8.2.3 內聯集閤操作222
8.2.4 決定何時將函數聲明成內聯223
8.2.5 使用內聯 lambda 管理資源223
8.3 高階函數中的控製流225
8.3.1 lambda 中的返迴語句 :從一個封閉的函數返迴225
8.3.2 從 lambda 返迴 :使用標簽返迴226
8.3.3 匿名函數 :默認使用局部返迴228
8.4 小結229
9 泛型231
9.1 泛型類型參數232
9.1.1 泛型函數和屬性232
9.1.2 聲明泛型類234
9.1.3 類型參數約束235
9.1.4 讓類型形參非空237
9.2 運行時的泛型 :擦除和實化類型參數238
9.2.1 運行時的泛型 :類型檢查和轉換238
9.2.2 聲明帶實化類型參數的函數241
9.2.3 使用實化類型參數代替類引用243
9.2.4 實化類型參數的限製244
9.3 變型 :泛型和子類型化245
9.3.1 為什麼存在變型 :給函數傳遞實參245
9.3.2 類、類型和子類型246
9.3.3 協變 :保留子類型化關係248
9.3.4 逆變 :反轉子類型化關係252
9.3.5 使用點變型 :在類型齣現的地方指定變型254
9.3.6 星號投影 :使用 * 代替類型參數257
9.4 小結261
10 注解與反射263
10.1 聲明並應用注解264
10.1.1 應用注解264
10.1.2 注解目標265
10.1.3 使用注解定製 JSON 序列化267
10.1.4 聲明注解269
10.1.5 元注解 :控製如何處理一個注解270
10.1.6 使用類做注解參數271
10.1.7 使用泛型類做注解參數272
10.2 反射 :在運行時對 Kotlin 對象進行自省273
10.2.1 Kotlin 反射 API :KClass、KCallable、KFunction 和
KProperty274
10.2.2 用反射實現對象序列化278
10.2.3 用注解定製序列化279
10.2.4 JSON 解析和對象反序列化283
10.2.5 反序列化的最後一步 :callBy() 和使用反射創建對象287
10.3 小結291
11 DSL 構建293
11.1 從 API 到 DSL293
11.1.1 領域特定語言的概念295
11.1.2 內部 DSL296
11.1.3 DSL 的結構297
11.1.4 使用內部 DSL 構建 HTML298
11.2 構建結構化的 API:DSL 中帶接收者的 lambda299
11.2.1 帶接收者的 lambda 和擴展函數類型299
11.2.2 在 HTML 構建器中使用帶接收者的 lambda303
11.2.3 Kotlin 構建器 :促成抽象和重用307
11.3 使用“invoke”約定構建更靈活的代碼塊嵌套310
11.3.1 “invoke”約定 :像函數一樣可以調用的對象310
11.3.2 “invoke”約定和函數式類型311
11.3.3 DSL 中的“invoke”約定 :在 Gradle 中聲明依賴312
11.4 實踐中的 Kotlin DSL314
11.4.1 把中綴調用鏈接起來 :測試框架中的“should”314
Kotlin實戰 下載 mobi epub pdf txt 電子書 格式Kotlin實戰 下載 mobi pdf epub txt 電子書 格式 2024
Kotlin實戰 下載 mobi epub pdf 電子書圖書質量很好,是正版的,活動購買的,很實惠!
評分給公司研發同學買的,不錯
評分對於開發來講,這些書都是可以看看的,知識就是力量。
評分這本書不錯,經典
評分發貨快發貨快發貨快發貨快發貨快,還沒看,包裝好
評分買瞭一堆書,沒時間看瞭,還沒拆封麼
評分哦婆婆去婆婆去湯普森您是我婆婆傢**圖去莆田哦蘇蘇時間簡史
評分東西很好,價格也很實惠,好評
評分物流非常給力價格很實惠
Kotlin實戰 mobi epub pdf txt 電子書 格式下載 2024