🎪 Kotlin 学习路线
92 个互动教程
Kotlin 入门 — Android 官方语言
Kotlin:简洁现代的 JVM 语言,比 Java 简洁 40%
Kotlin data class
自动生成 equals/hashCode/toString/copy
Kotlin 类与对象
data class、属性、copy、解构
Kotlin Lambda表达式
学习Kotlin中Kotlin Lambda表达式 — Kotlin教程的详细用法和最佳实践
Kotlin 扩展函数
Kotlin 扩展函数深度解析
Kotlin 协程 — 异步编程
suspend + coroutine:轻量级异步
Kotlin DSL构建器
学习Kotlin中Kotlin DSL构建器 — Kotlin教程的详细用法和最佳实践
Kotlin Flow 异步流
冷流、操作符、collect
Kotlin 密封类
sealed class 受限继承+穷举when
Kotlin 泛型
泛型类/函数/型变
Kotlin inline 函数
消除 Lambda 对象创建开销
Kotlin 委托属性
学习Kotlin中Kotlin 委托属性 — Kotlin教程的详细用法和最佳实践
Kotlin Sequence
学习Kotlin中Kotlin Sequence — Kotlin教程的详细用法和最佳实践
Kotlin 集合操作
filter/map/sortedBy/groupBy/take
Kotlin 空安全
?/!!/?.let/?: Elvis 操作符
Kotlin 作用域函数
let/run/with/apply/also 选择指南
Kotlin Android 入门
Android Studio/Activity/Compose/权限
Kotlin Flow 响应式流
Kotlin Flow(冷数据流):flow{}构建器、collect收集、操作符map/filter/transform、flatMapConcat/Merge/Latest、SharedFlow/StateFlow热流、与LiveData对比
Kotlin 协程深入
Kotlin协程深入:suspend挂起函数(CPS转换/状态机)、CoroutineContext上下文、CoroutineScope作用域结构化并发、supervisorScope子协程独立错误、withContext切换调度器
Kotlin 内联函数与具体化
Kotlin内联:inline函数消除lambda闭包开销、noinline禁止内联、crossinline禁止非局部返回、reified具体化类型参数(访问泛型T类型信息)、使用时机与性能
Kotlin Sealed Classes 密封类
Kotlin密封类:sealed class/sealed interface定义受限类层次、when表达式穷尽性检查(编译器保证所有分支覆盖)、密封类作为枚举增强版、Result类型(Success/Failure)
Kotlin DSL 领域特定语言
Kotlin类型安全的构建器(Type-Safe Builders):@DslMarker防止隐式接收者冲突、lambda with receiver高阶函数构建DSL、Gradle Kotlin DSL/Gradle KTS就是DSL实例、Jetpack Compose UI也是DSL
Kotlin Channel 通道
Kotlin Channel通道:协程间通信原语、SendChannel/ReceiveChannel接口、Channel()创建(BUFFERED缓冲/CONFLATED合并最新/UNLIMITED无限制/RENDEZVOUS无缓冲会面)、produce/actor协程构建器
Kotlin 作用域函数对比
Kotlin五大作用域函数对比:let(返回lambda结果/it非空操作/链式处理)、run(返回lambda结果/this引用/对象配置+计算)、with(非扩展函数/参数是接收者/返回lambda结果)、apply(返回this自身/this引用/对象初始化配置)、also(返回this自身/it引用/附加操作日志验证)
Kotlin Result 类型
Kotlin Result<T>类型(函数式错误处理/替代try-catch):runCatching{...}捕获异常返回Result<T>、Result.success/Result.failure匹配、getOrNull/getOrDefault/getOrElse/getOrThrow、recover/recoverCatching从异常恢复、map/mapCatching成功转换、fol
Kotlin 入门 — 开发环境与Hello World
Kotlin简介(JetBrains开发/JVM语言/Android官方语言)、IntelliJ IDEA安装、第一个Kotlin程序、main函数、println输出、与Java的互操作性
Kotlin 变量与数据类型
Kotlin变量:val(不可变/推荐)vs var(可变)、类型推断、基本类型(Int/Double/Boolean/String)、可空类型?、安全调用?.、Elvis运算符?:
Kotlin 函数定义
Kotlin函数:fun关键字、参数默认值、命名参数、单表达式函数、可变参数vararg、扩展函数、中缀函数infix、高阶函数(函数作为参数/返回值)
Kotlin扩展函数实战
学习如何使用扩展函数为现有类添加新功能,提升代码可读性和复用性。
Kotlin 类与对象
Kotlin类:主构造函数(简洁语法)、init初始化块、data class数据类(自动生成equals/hashCode/toString/copy)、object单例、companion object伴生对象
Kotlin委托模式详解
掌握委托属性和类委托,减少样板代码,实现灵活的设计模式。
Kotlin 集合操作
Kotlin集合:List/Set/Map(可变mutable/只读)、集合操作(filter/map/find/groupBy/sortedBy/fold/reduce)、序列Sequence(惰性求值)
Kotlin反射入门
学习在运行时检查类、属性和函数,理解KClass、KProperty和KFunction的使用。
Kotlin 协程 Coroutines
Kotlin协程:suspend挂起函数、launch/async构建器、CoroutineScope作用域、Dispatchers调度器(Main/IO/Default)、structured concurrency结构化并发
Kotlin序列化详解
使用kotlinx.serialization库轻松实现对象与JSON的相互转换。
Kotlin 密封类与内联类
Kotlin密封类sealed class(受限类层次/when完备性)、内联类value class(零开销包装/类型安全)、内联函数inline(消除lambda开销/reified具体化泛型)
Kotlin Channels入门
学习使用协程通道在不同协程之间安全传递数据流。
Kotlin StateFlow详解
掌握StateFlow和SharedFlow,在响应式应用中管理状态和数据流。
Kotlin测试入门
使用Kotlin Test框架编写单元测试,掌握断言、参数化测试和模拟。
Kotlin Ktor客户端入门
学习使用Ktor HTTP客户端发送请求和处理响应,构建网络应用。
Kotlin Exposed ORM入门
学习使用Exposed框架进行数据库操作,包括表定义、查询和事务。
Kotlin Multiplatform入门
了解KMP架构,编写共享代码在Android和iOS等平台复用。
内联值类的内存布局与性能陷阱
深入解析 Kotlin 内联值类的底层 JVM 内存表示,以及常见的性能误用场景。
型变注解的底层协变保证与 unsafeVariance 陷阱
探究 @UnsafeVariance 注解如何绕过 Kotlin 类型检查,以及在实际协变/逆变使用中的深层风险。
编译器合约:用 Contract DSL 告诉编译器“我不会返回 null”
通过 Kotlin 的 contract 实验性功能,创建自定义智能函数契约来改进空安全分析。
编写 Kotlin 编译器插件:自定义注解处理器生成源码
从零构建一个 Kotlin Compiler Plugin,在编译期间扫描注解并自动生成委托代码。
跨平台无锁原语:AtomicFu 底层实现与自定义锁构造
深入 AtomicFu 库在 JVM/JS/Native 上的不同实现策略,并基于它构建一种自定义的 StampedLock。
协程拦截器:自定义 ContinuationInterceptor 改造 Flow 调度
通过实现 ContinuationInterceptor 来拦截协程恢复,从而在 Flow 的每个 emit 前后插入监控逻辑。
密封接口与代数类型:构建无副作用的 JSON 解析器
利用密封接口模拟 Haskell 的 ADT,并结合 when 穷尽检查实现一个类型安全的 JSON 解析器。
内联函数与实化泛型:打破类型擦除的三种黑科技
深入 reified 关键字的实现原理,并展示除类型检查外的高阶用法:泛型多态序列化、类型安全的构建器。
Arrow 库的 Kleisli 组合子:纯函数式依赖注入
利用 Arrow 的 Kleisli (ReaderT) 构建类型安全的依赖注入系统,替代手动传参或框架。
在 Gradle Kotlin DSL 中编写类型安全的自定义 Task 生成器
利用 Kotlin 委托属性和扩展函数构建 Gradle Task 的声明式 API,避免 Groovy 的字符串类型。
内联类的性能优化与类型安全
深入探讨Kotlin内联类的编译器优化机制,以及如何利用它解决包装类型性能开销问题。
协程底层的延续传递风格解析
从CPS变换角度理解Kotlin协程的suspend函数编译原理,并手动实现简易协程调度器。
用密封类与类型代数实现联合类型模式
Kotlin没有内建联合类型,但可以借助密封类和类型代数来模拟类似TypeScript的联合类型。
Kotlin编译器插件入门:注解处理与代码生成
学习Kotlin Symbol Processing (KSP) 基础,编写一个编译期生成Builder的插件。
Kotlin/Native内存管理:自动引用计数与冻结
深入Kotlin/Native的ARC和冻结机制,理解它与JVM GC的不同以及如何避免内存泄漏。
函数类型与SAM转换的深层互操作
解析Kotlin函数接口(fun interface)与Java SAM的转换差异,以及如何自定义SAM接口。
Kotlin契约(Contracts)实战:编译器辅助的约定式编程
学习Kotlin实验性契约功能,通过@Contract注解让编译器理解函数对参数的影响。
Flow背压策略深度定制:从缓冲到合并
解析Kotlin Flow的背压处理策略,并手动实现自定义的背压操作符。
Kotlin反射与注解处理器的高级模式
利用Kotlin的反射API和注解处理器实现运行时依赖注入容器的简化版。
基于AtomicFU的无锁数据结构实现
使用Kotlin的AtomicFU库构建无锁栈和队列,理解CAS操作与ABA问题。
深入协程:Continuation 传递机制与状态机
揭开协程底层原理,通过手写 Continuation 对象理解挂起函数如何编译为状态机,不再只调用 suspend 而不知其所以然。
KMP 新内存模型:冻结、引用计数与跨平台陷阱
深入 Kotlin Multiplatform 的引用计数内存管理,对比 JVM GC,讲解对象冻结、跨 Island 传递规则及常见崩溃场景。
内联的艺术:reified 范型、非局部返回与性能优化陷阱
超越基础 inline 用法,重点讲解 reified 类型参数如何消除擦除、内联函数中的非局部返回对控制流的影响,以及避免字节码膨胀的策略。
Flow 信道魔法:冷流变热流的背压与节流实战
区分冷流与热流的生命周期,实现自定义背压策略、debounce/sample 节流,并对比 SharedFlow/StateFlow 在状态管理中的适用场景。
编写 Kotlin 编译器插件:IR 中间表示与 AST 转换
从零创建 Kotlin 编译器插件,利用 IR (Intermediate Representation) 实现自动序列化、日志注入或合约验证,掌握编译期元编程。
密封接口代数数据类型:从状态机到领域驱动设计
利用 sealed interface 构建穷尽匹配的代数数据类型,实现复杂状态机、协议解析器,并分析对比 when 穷尽性检查与枚举局限。
KSP vs KAPT:手写注解处理器生成代码
对比 KSP (Kotlin Symbol Processing) 与 KAPT 的架构差异,实战编写一个自动生成工厂类的注解处理器,理解符号引用与代码生成。
手写协程调度器:从 Linux epoll 到 Android Main 线程
自定义 CoroutineDispatcher 实现,通过 epoll/select、Handler 或 EventLoop 驱动协程,理解调度器设计模式与线程切换代价。
类型别名与内联类的性能博弈:零开销抽象与装箱隐患
深入内联类底层,分析何时真正零开销、何时产生装箱,对比 typealias 的编译后能力,并使用内联类实现类型安全的测量单位。
Gradle 版本目录与 convention plugins:多模块项目依赖治理
利用 version catalog + convention plugins 实现依赖版本集中管理、跨模块共享编译配置,避免 Dagger/Hilt 等注解处理器冲突。
Kotlin 延续传递风格与协程底层实现
深入理解 CPS 变换在 Kotlin 协程中的核心作用,掌握 suspend 函数的本质是状态机而非线程。
Kotlin 幻影类型参数与具体化泛型的深度陷阱
揭示 reified 关键字背后编译器生成的桥接代码,以及幻影类型参数在 DSL 设计中的创新应用。
Kotlin 密封类的代数数据类型与协变逆变对抗
掌握 sealed class 作为代数数据类型的完整表达力,以及如何用声明处变型解决模式匹配中的类型安全问题。
Kotlin 上下文接收器:隐式参数的强类型安全
使用 context receiver 为 DSL 和依赖注入提供编译期检查,替代传统线程本地存储模式。
Kotlin 内联值类的运行时优化与内存布局
探索 inline class 如何通过装箱消除和内存内联实现零开销抽象,以及多平台中的特殊限制。
Kotlin Flow 自定义操作符的背压与组合子设计
从零实现 Flow 操作符,掌握背压机制、缓冲区策略和冷热流转换的深层原理。
Kotlin 类型安全构建器的接收器解析与作用域控制
利用 @DslMarker 和多个接收器构建无歧义的 DSL,解决嵌套 lambda 的作用域冲突。
Kotlin Multiplatform 的 Objective-C 互操作与内存模型
在 KMP 中处理 iOS 端的内存模型差异,理解 Swift 与 Kotlin 的引用计数桥接。
Kotlin 注解处理:KSP 与编译元数据编程
使用 Kotlin Symbol Processing (KSP) 代替 kapt,高效解析源码符号并生成代码。
Kotlin 编译器契约:自定义智能类型推导
通过 @Contract 注解指导编译器进行更精确的 nullability 和副作用分析。
类型别名与内联类的性能玄机:避免装箱陷阱
深入剖析 typealias 与 inline class 在字节码层面的差异,揭示内联类如何通过避免装箱提升性能,并给出实战误用场景。
逆变与数组协变冲突:类型安全的暗礁
解释 Kotlin 中声明处变型(in/out)与 Java 数组协变的历史遗留问题,以及在混合编程时如何避免 ArrayStoreException。
密封接口驱动有限状态机:编译期穷举检查
利用 sealed interface 实现复杂状态机,利用 when 的穷举特性在编译期捕获未处理的状态转换,替代传统枚举或抽象类。
SharedFlow 与 StateFlow 暗涌:背压与重放策略深度定制
讲解 SharedFlow 的 replay、extraBufferCapacity、onBufferOverflow 三参数如何协同工作,以及 StateFlow 的 conflated 特性与同步一致性保证。
上下文接收器:编译期依赖注入的另一种范式
展示 Kotlin 2.0+ 的 context receivers 如何替代部分依赖注入框架,通过编译期上下文传递实现作用域可控的隐式参数。
契约编程:让编译器替你优化空检查与智能转换
使用 @Contract 注解向编译器传递函数行为语义,消除冗余空检查、实现自定义智能转换,甚至实现流式 API 的编译期验证。
跨平台无锁编程:AtomicFu 与 Kotlin/Native 内存模型
在 KMP 项目中利用 AtomicFU 实现无锁数据结构,并解释 Kotlin/Native 新的冻结内存模型下原子操作的特殊约束。
内联函数与具化类型参数:绕开类型擦除的桥接技巧
利用 inline + reified 突破 JVM 类型擦除限制,实现运行时获取泛型类型、创建泛型数组,以及避免桥接方法性能开销。
协程调度器与 ThreadLocal 鸿沟:漫游协程上下文传播
解析 ThreadLocal 在协程中的失效原因,并展示如何通过 kotlinx.coroutines 的 ThreadContextElement 实现跨协程上下文传递,以及 MDC 日志上下文的最佳实践。
领域特定语言构建器:作用域控制与 @DslMarker 防泄漏
利用 @DslMarker 注解限制 DSL 嵌套作用域中的隐式接收者引用,防止歧义调用,实现类型安全的 HTML/数据库查询构建器。