小苏子
小苏子PDF在线图书

Kotlin实战 作者:(俄)DMITRY JEMEROV,(俄)SVETLANA ISAKOVA

Kotlin实战 作者:(俄)DMITRY JEMEROV,(俄)SVETLANA ISAKOVA

Kotlin实战 出版社:电子工业出版社

Kotlin实战 内容简介

Kotlin实战 目录

《Kotlin实战》将从语言的基本特性开始,逐渐覆盖其更多的高级特性,尤其注重讲解如何将 Koltin 集成到已有 Java 工程实践及其背后的原理。《Kotlin实战》分为两个部分。第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数和扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了可空性和集合的概念)。第二部分教你如何使用 Kotlin 构建自己的 API,以及一些深层次特性——约定和委托属性、高阶函数、泛型、注解和反射,以及领域特定语言的构建。本书适合广大移动开发者及入门学习者,尤其是紧跟主流趋势的前沿探索者。第1部分 Kotlin简介1 Kotlin:定义和目的1.1 Kotlin初体验1.2 Kotlin的主要特征1.2.1 目标平台:服务器端、Android及任何Java运行的地方1.2.2 静态类型1.2.3 函数式和面向对象1.2.4 免费并开源1.3 Kotlin应用1.3.1 服务器端的Kotlin1.3.2 Android上的Kotlin1.4 Kotlin的设计哲学1.4.1 务实1.4.2 简洁1.4.3 安全1.4.4 互操作性1.5 使用Kotlin工具1.5.1 编译Kotlin代码1.5.2 IntelliJ IDEA和Android Studio插件1.5.3 交互式shell1.5.4 Eclipse插件1.5.5 在线playground1.5.6 Java到Kotlin的转换器1.6 小结2 Kotlin基础2.1 基本要素:函数和变量2.1.1 Hello,world!2.1.2 函数2.1.3 变量2.1.4 更简单的字符串格式化:字符串模板2.2 类和属性2.2.1 属性2.2.2 自定义访问器2.2.3 Kotlin源码布局:目录和包2.3 表示和处理选择:枚举和“when”2.3.1 声明枚举类2.3.2 使用“when”处理枚举类2.3.3 在“when”结构中使用任意对象2.3.4 使用不带参数的“when”2.3.5 智能转换:合并类型检查和转换2.3.6 重构:用“when”代替“if”2.3.7 代码块作为“if”和“when”的分支2.4 迭代事物:“while”循环和“for”循环2.4.1 “while”循环2.4.2 迭代数字:区间和数列2.4.3 迭代map2.4.4 使用“in”检查集合和区间的成员2.5 Kotlin中的异常2.5.1 “try”“catch”和“finally”2.5.2 “try”作为表达式2.6 小结3 函数的定义与调用3.1 在Kotlin中创建集合3.2 让函数更好调用3.2.1 命名参数3.2.2 默认参数值3.2.3 消除静态工具类:顶层函数和属性3.3 给别人的类添加方法:扩展函数和属性3.3.1 导入和扩展函数3.3.2 从Java中调用扩展函数3.3.3 作为扩展函数的工具函数3.3.4 不可重写的扩展函数3.3.5 扩展属性3.4 处理集合:可变参数、中缀调用和库的支持3.4.1 扩展Java集合的API3.4.2 可变参数:让函数支持任意数量的参数3.4.3 键值对的处理:中缀调用和解构声明3.5 字符串和正则表达式的处理3.5.1 分割字符串3.5.2 正则表达式和三重引号的字符串3.5.3 多行三重引号的字符串3.6 让你的代码更整洁:局部函数和扩展3.7 小结4 类、对象和接口4.1 定义类继承结构4.1.1 Kotlin中的接口4.1.2 open、final和abstract修饰符:默认为final4.1.3 可见性修饰符:默认为public4.1.4 内部类和嵌套类:默认是嵌套类4.1.5 密封类:定义受限的类继承结构4.2 声明一个带非默认构造方法或属性的类4.2.1 初始化类:主构造方法和初始化语句块4.2.2 构造方法:用不同的方式来初始化父类4.2.3 实现在接口中声明的属性4.2.4 通过getter或setter访问支持字段4.2.5 修改访问器的可见性4.3 编译器生成的方法:数据类和类委托4.3.1 通用对象方法4.3.2 数据类:自动生成通用方法的实现4.3.3 类委托:使用“by”关键字4.4 “object”关键字:将声明一个类与创建一个实例结合起来4.4.1 对象声明:创建单例易如反掌4.4.2 伴生对象:工厂方法和静态成员的地盘4.4.3 作为普通对象使用的伴生对象4.4.4 对象表达式:改变写法的匿名内部类4.5 小结5 Lambda 编程5.1 Lambda表达式和成员引用5.1.1 Lambda简介:作为函数参数的代码块5.1.2 Lambda和集合5.1.3 Lambda表达式的语法5.1.4 在作用域中访问变量5.1.5 成员引用5.2 集合的函数式API5.2.1 基础:filter和map5.2.2 “all”“any”“count”和“find”:对集合应用判断式5.2.3 groupBy:把列表转换成分组的map5.2.4 flatMap和flatten:处理嵌套集合中的元素5.3 惰性集合操作:序列5.3.1 执行序列操作:中间和末端操作5.3.2 创建序列5.4 使用Java函数式接口5.4.1 把lambda当作参数传递给Java方法5.4.2 SAM构造方法:显式地把lambda转换成函数式接口5.5 带接收者的lambda:“with”与“apply”5.5.1 “with”函数5.5.2 “apply”函数5.6 小结6 Kotlin 的类型系统6.1 可空性6.1.1 可空类型6.1.2 类型的含义6.1.3 安全调用运算符:“?.”6.1.4 Elvis运算符:“?:”6.1.5 安全转换:“as?”6.1.6 非空断言:“!!”6.1.7 “let”函数6.1.8 延迟初始化的属性6.1.9 可空类性的扩展6.1.10 类型参数的可空性6.1.11 可空性和Java6.2 基本数据类型和其他基本类型6.2.1 基本数据类型:Int、Boolean及其他6.2.2 可空的基本数据类型:Int?、Boolean?及其他6.2.3 数字转换6.2.4 “Any”和“Any?”:根类型6.2.5 Unit类型:Kotlin的“void”6.2.6 Nothing类型:“这个函数永不返回”6.3 集合与数组6.3.1 可空性和集合6.3.2 只读集合与可变集合6.3.3 Kotlin集合和Java6.3.4 作为平台类型的集合6.3.5 对象和基本数据类型的数组6.4 小结第2部分 拥抱Kotlin7 运算符重载及其他约定7.1 重载算术运算符7.1.1 重载二元算术运算7.1.2 重载复合赋值运算符7.1.3 重载一元运算符7.2 重载比较运算符7.2.1 等号运算符:“equals”7.2.2 排序运算符:compareTo7.3 集合与区间的约定7.3.1 通过下标来访问元素:“get”和“set”7.3.2 “in”的约定7.3.3 rangeTo的约定7.3.4 在“for”循环中使用“iterator”的约定7.4 解构声明和组件函数7.4.1 解构声明和循环7.5 重用属性访问的逻辑:委托属性7.5.1 委托属性的基本操作7.5.2 使用委托属性:惰性初始化和“by lazy()”7.5.3 实现委托属性7.5.4 委托属性的变换规则7.5.5 在map中保存属性值7.5.6 框架中的委托属性7.6 小结8 高阶函数:Lambda作为形参和返回值8.1 声明高阶函数8.1.1 函数类型8.1.2 调用作为参数的函数8.1.3 在Java中使用函数类8.1.4 函数类型的参数默认值和null值8.1.5 返回函数的函数8.1.6 通过lambda去除重复代码8.2 内联函数:消除lambda带来的运行时开销8.2.1 内联函数如何运作8.2.2 内联函数的限制8.2.3 内联集合操作8.2.4 决定何时将函数声明成内联8.2.5 使用内联lambda管理资源8.3 高阶函数中的控制流8.3.1 lambda中的返回语句:从一个封闭的函数返回8.3.2 从lambda返回:使用标签返回8.3.3 匿名函数:默认使用局部返回8.4 小结9 泛型9.1 泛型类型参数9.1.1 泛型函数和属性9.1.2 声明泛型类9.1.3 类型参数约束9.1.4 让类型形参非空9.2 运行时的泛型:擦除和实化类型参数9.2.1 运行时的泛型:类型检查和转换9.2.2 声明带实化类型参数的函数9.2.3 使用实化类型参数代替类引用9.2.4 实化类型参数的限制9.3 变型:泛型和子类型化9.3.1 为什么存在变型:给函数传递实参9.3.2 类、类型和子类型9.3.3 协变:保留子类型化关系9.3.4 逆变:反转子类型化关系9.3.5 使用点变型:在类型出现的地方指定变型9.3.6 星号投影:使用*代替类型参数9.4 小结10 注解与反射10.1 声明并应用注解10.1.1 应用注解10.1.2 注解目标10.1.3 使用注解定制JSON序列化10.1.4 声明注解10.1.5 元注解:控制如何处理一个注解10.1.6 使用类做注解参数10.1.7 使用泛型类做注解参数10.2 反射:在运行时对Kotlin对象进行自省10.2.1 Kotlin反射API:KClass、KCallable、KFunction和KProperty10.2.2 用反射实现对象序列化10.2.3 用注解定制序列化10.2.4 JSON解析和对象反序列化10.2.5 反序列化的最后一步:callBy()和使用反射创建对象10.3 小结11 DSL构建11.1 从API到DSL11.1.1 领域特定语言的概念11.1.2 内部DSL11.1.3 DSL的结构11.1.4 使用内部DSL构建HTML11.2 构建结构化的API:DSL中带接收者的lambda11.2.1 带接收者的lambda和扩展函数类型11.2.2 在HTML构建器中使用带接收者的lambda11.2.3 Kotlin构建器:促成抽象和重用11.3 使用“invoke”约定构建更灵活的代码块嵌套11.3.1 “invoke”约定:像函数一样可以调用的对象11.3.2 “invoke”约定和函数式类型11.3.3 DSL中的“invoke”约定:在Gradle中声明依赖11.4 实践中的Kotlin DSL11.4.1 把中缀调用链接起来:测试框架中的“should”11.4.2 在基本数据类型上定义扩展:处理日期11.4.3 成员扩展函数:为SQL设计的内部DSL11.4.4 Anko:动态创建Android UI11.5 小结A 构建Kotlin项目B Kotlin代码的文档化C Kotlin生态系统

赞(0)
未经允许不得转载:小苏子图书 » Kotlin实战 作者:(俄)DMITRY JEMEROV,(俄)SVETLANA ISAKOVA