• 【假一罚四】深入实践Kotlin元编程霍丙乾 著
  • 【假一罚四】深入实践Kotlin元编程霍丙乾 著
  • 【假一罚四】深入实践Kotlin元编程霍丙乾 著
  • 【假一罚四】深入实践Kotlin元编程霍丙乾 著
  • 【假一罚四】深入实践Kotlin元编程霍丙乾 著
  • 【假一罚四】深入实践Kotlin元编程霍丙乾 著
21年品牌 40万+商家 超1.5亿件商品

【假一罚四】深入实践Kotlin元编程霍丙乾 著

集团直发,全新正版书籍,假一罚四,放心选购。24小时内发货。可开发票

86.2 7.9折 109 全新

库存5件

浙江嘉兴
认证卖家担保交易快速发货售后保障

作者霍丙乾 著

出版社机械工业

ISBN9787111732549

出版时间2023-08

装帧其他

开本其他

定价109元

货号31818387

上书时间2024-06-23

朗朗图书书店

已实名 已认证 进店 收藏店铺
  • 店主推荐
  • 最新上架

   商品详情   

品相描述:全新
商品描述
目录
目 录 Contents<br />前言<br />第一部分 元编程的基础知识<br />第1章 元编程概述2<br />1.1 元编程的需求背景2<br />1.2 元编程的基本概念4<br />1.2.1 元编程的定义5<br />1.2.2 元编程的分类5<br />1.3 元编程的学习方法6<br />1.3.1 培养兴趣6<br />1.3.2 付诸行动6<br />1.3.3 善用工具7<br />1.3.4 多读源代码8<br />1.4 常用项目的调试环境配置8<br />1.4.1 Java编译器8<br />1.4.2 Kotlin编译器11<br />1.4.3 IntelliJ社区版13<br />1.4.4 Jetpack Compose编译器插件19<br />1.5 本章小结21<br />第2章 元数据概述22<br />2.1 基本概念22<br />2.1.1 语法结构23<br />2.1.2 编译产物23<br />2.2 注释23<br />2.2.1 注释的结构化23<br />2.2.2 文档生成24<br />2.3 注解25<br />2.3.1 注解的概念25<br />2.3.2 源代码可见的注解26<br />2.3.3 二进制可见的注解27<br />2.3.4 运行时可见的注解30<br />2.4 Kotlin的元数据31<br />2.4.1 Kotlin JVM中的@Metadata<br />   注解31<br />2.4.2 Kotlin JVM模块中的元数据35<br />2.4.3 klib中的元数据37<br />2.5 Kotlin的语法树39<br />2.5.1 Kotlin的语法定义40<br />2.5.2 基于IntelliJ平台接口的抽象语<br />   法树41<br />2.5.3 新一代语法树FIR42<br />2.5.4 连接前后端编译器的IR43<br />2.5.5 Java和Kotlin的符号树45<br />2.6 Kotlin的编译产物47<br />2.6.1 JVM47<br />2.6.2 JavaScript48<br />2.6.3 Native48<br />2.7 本章小结49<br />第二部分 元编程的技术实践<br />第3章 运行时的反射52<br />3.1 Java反射52<br />3.1.1 基本功能52<br />3.1.2 解除访问限制53<br />3.1.3 动态代理54<br />3.1.4 对注解的支持55<br />3.1.5 对方法参数名的支持56<br />3.1.6 访问Kotlin代码57<br />3.2 Kotlin反射58<br />3.2.1 基本功能59<br />3.2.2 类引用的获取61<br />3.2.3 属性引用和函数引用65<br />3.2.4 typeOf67<br />3.2.5 dynamic类型69<br />3.2.6 属性委托70<br />3.3 案例:Retrofit的接口实现72<br />3.3.1 Retrofit基本用法72<br />3.3.2 GitHubService实例的创建73<br />3.3.3 函数参数与请求参数的<br />      对应关系74<br />3.3.4 泛型类型的反序列化74<br />3.3.5 案例小结75<br />3.4 案例:使用反射实现DeepCopy75<br />3.4.1 案例背景75<br />3.4.2 需求分析76<br />3.4.3 案例实现78<br />3.4.4 小试牛刀79<br />3.4.5 案例小结79<br />3.5 案例:使用dynamic类型为<br />   Kotlin JS实现DeepCopy80<br />3.5.1 案例背景80<br />3.5.2 需求分析80<br />3.5.3 案例实现83<br />3.5.4 案例小结83<br />3.6 本章小结84<br />第4章 源代码生成85<br />4.1 直接输出目标代码85<br />4.1.1 一个简单的例子85<br />4.1.2 标准库的代码生成87<br />4.2 案例:为Kotlin添加Tuple类型88<br />4.2.1 案例背景88<br />4.2.2 需求分析90<br />4.2.3 案例实现91<br />4.3 使用模板引擎生成目标代码93<br />4.3.1 Anko中的代码生成93<br />4.3.2 使用模板引擎渲染目标代码95<br />4.4 案例:为Java静态方法生成<br />   Kotlin扩展函数(模板引擎)96<br />4.4.1 案例背景96<br />4.4.2 需求分析96<br />4.4.3 案例实现98<br />4.4.4 代码优化101<br />4.5 使用代码生成框架生成目标代码104<br />4.5.1 JavaPoet104<br />4.5.2 KotlinPoet109<br />4.6 案例:为Java静态方法生成<br />   Kotlin扩展函数(KotlinPoet)114<br />4.6.1 类型的映射114<br />4.6.2 实现代码生成116<br />4.6.3 泛型参数的支持118<br />4.7 本章小结121<br />第5章 编译时的符号处理122<br />5.1 符号的基本概念122<br />5.1.1 Java的符号122<br />5.1.2 Kotlin的符号124<br />5.1.3 符号与语法树节点的关系和<br />   区别125<br />5.2 处理器的基本结构125<br />5.2.1 APT的基本结构125<br />5.2.2 KSP的基本结构130<br />5.2.3 APT与KSP的结构差异131<br />5.2.4 处理器的配置文件132<br />5.3 深入理解符号和类型132<br />5.3.1 获取修饰符133<br />5.3.2 通过名称获取符号133<br />5.3.3 获取符号的类型134<br />5.3.4 通过类型获取符号138<br />5.3.5 判断类型之间的关系139<br />5.3.6 获取注解及其参数值141<br />5.4 案例:基于源代码生成模块的<br />  符号文件144<br />5.4.1 案例背景144<br />5.4.2 案例实现:APT版本145<br />5.4.3 案例实现:KSP版本147<br />5.5 深入理解符号处理器148<br />5.5.1 如何使用APT处理Kotlin<br />    符号148<br />5.5.2 符号的有效性验证150<br />5.5.3 处理器的轮次和符号的延迟<br />    处理150<br />5.5.4 处理器对增量编译的支持151<br />5.5.5 多模块的符号处理154<br />5.6 案例:使用符号处理器实现<br />   DeepCopy156<br />5.6.1 案例背景156<br />5.6.2 需求分析156<br />5.6.3 案例实现:APT版本157<br />5.6.4 案例实现:KSP版本160<br />5.6.5 案例小结163<br />5.7 本章小结163<br />第6章 程序静态分析164<br />6.1 案例:检查项目中的数据类164<br />6.1.1 案例背景164<br />6.1.2 需求分析166<br />6.1.3 案例实现:使用正则表达式<br />   匹配167<br />6.1.4 案例小结169<br />6.2 Kotlin程序的语法分析169<br />6.2.1 需求扩展169<br />6.2.2 案例实现:使用Antlr实现<br />   语法树解析170<br />6.2.3 案例小结173<br />6.3 Kotlin程序的语义分析173<br />6.3.1 需求扩展173<br />6.3.2 案例实现:使用Kotlin编译器<br />   进行语义分析174<br />6.3.3 案例小结176<br />6.4 使用detekt进行静态扫描176<br />6.4.1 基于detekt实现数据类扫描177<br />6.4.2 使用detekt的IntelliJ插件178<br />6.5 基于IntelliJ IDEA进行语法检查180<br />6.5.1 IntelliJ IDEA中的代码检查180<br />6.5.2 实现对数据类的检查181<br />6.5.3 实现快捷修复操作182<br />6.6 本章小结184<br />第7章 编译器插件185<br />7.1 编译器插件概述185<br />7.1.1 什么是编译器插件185<br />7.1.2 编译器插件能做什么186<br />7.2 编译器插件项目的基本结构187<br />7.2.1 编译器插件模块187<br />7.2.2 编译工具链插件模块190<br />7.2.3 集成开发环境插件模块19<br />7.3 案例:trimIndent函数的编译时<br />  实现195<br />7.3.1 案例背景195<br />7.3.2 需求分析196<br />7.3.3 案例实现197<br />7.3.4 插件的发布202<br />7.3.5 案例小结205<br />7.4 案例:使用编译器插件实现<br />  DeepCopy205<br />7.4.1 案例背景205<br />7.4.2 需求分析205<br />7.4.3 案例实现206<br />7.4.4 案例小结212<br />7.5 符号处理器的实现原理212<br />7.5.1 Java存根的生成212<br />7.5.2 Java编译器的调用213<br />7.5.3 增量编译的支持214<br />7.5.4 多轮次符号处理215<br />7.5.5 注解实例的构造216<br />7.5.6 延伸:依赖关系分析217<br />7.6 本章小结217<br />第8章 元程序的开发和调试218<br />8.1 使用kotlin-compile-testing编写<br />   单元测试218<br />8.1.1 编译器的调用和调试218<br />8.1.2 检查KAPT的输出221<br />8.1.3 添加对KSP的支持222<br />8.1.4 运行编译后的程序223<br />8.1.5 打印变换之后的IR225<br />8.1.6 多模块编译227<br />8.2 使用kotlin-compile-testing-extensions<br />   简化单元测试228<br />8.2.1 测试数据的组织形式228<br />8.2.2 测试数据的加载230<br />8.2.3 编译运行并检查结果231<br />8.2.4 检查IR和运行时输出232<br />8.3 在实际项目中集成233<br />8.3.1 工程的组织形式234<br />8.3.2 单步调试Kotlin编译器235<br />8.3.3 Kotlin编译器的日志输出237<br />8.4 本章小结238<br />第三部分 综合案例<br />第9章 Jetpack Compose的编译<br />    时处理240<br />9.1 Jetpack Compose简介240<br />9.2 静态检查243<br />9.2.1 错误信息243<br />9.2.2 声明检查245<br />9.2.3 调用检查251<br />9.2.4 目标检查260<br />9.3 案例:为DeepCopy添加代码检查261<br />9.3.1 案例背景261<br />9.3.2 需求分析261<br />9.3.3 案例实现262<br />9.3.4 案例效果265<br />9.4 代码提示266<br />9.4.1 Composable函数的命名266<br />9.4.2 Composable函数调用的颜色270<br />9.5 Composable函数的变换272<br />9.5.1 $composer参数272<br />9.5.2 参数默认值277<br />9.5.3 参数的变化状态与重组的<br />    跳过机制284<br />9.6 本章小结299<br />第10章 AtomicFU的编译产物<br />     处理300<br />10.1 AtomicFU的由来300<br />10.2 Kotlin JVM平台的编译产物<br />   处理304<br />10.2.1 需求背景分析304<br />10.2.2 技术选型分析305<br />10.2.3 方案实现分析305<br />10.3 Kotlin JS平台的编译产物处理315<br />10.3.1 需求背景分析316<br />10.3.2 技术选型分析317<br />10.3.3 方案实现分析317<br />10.4 本章小结324

内容摘要
这是一本从基础知识、设计思想、技术方案、应用方法、实践技巧5个维度系统讲解Kotlin元编程,并以此大幅提升Kotlin工程师开发水平、研发效率和开发体验的著作。作者是Kotlin领域的资深专家和布道者,本书源于他对Kotlin编译器源码的反复研读和大量的工程实践,不仅细致讲解了反射、程序静态分析、 Java注解处理器、Kotlin符号处理器、Kotlin编译器插件、元程序的开发和调试等核心元编程技术,而且详细剖析了JetpackCompose的编译器插件和IntelliJ插件、AtomicFU的JVM字节码和JavaScript代码的生成逻辑。本书的出版打破了元编程技术资料少、门槛高的行业现状。本书包含大量案例,这些案例大多来自真实的生产实践,相对成熟和完善,可以作为元编程项目的范本。同时,本书提供大量的代码,为了提升阅读体验,在注释、书写和排版等方面对代码做了精心的优化。全书的源文件均可免费下载,读者可以通过作者的网站实时与作者互动和交流。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP