
kotlin
文章平均质量分 96
Kotlin 的学习笔记,相对琐碎零散,记录自己的学习过程及思考
Huang兄
Android | Flutter | HarmonyOS | Kotlin
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kotlin中的内联函数:inline,noinline,crossinline,参数内联,非局部返回
Kotlin中的inline、noinline和crossinline关键字详解: inline关键字用于函数内联,将函数体直接复制到调用处,减少函数调用开销,允许lambda参数非局部返回。适用于高阶函数以减少对象创建,但会增加代码体积。 noinline关键字标记不被内联的lambda参数,用于需要保留函数对象的情况(如作为返回值或传递给非inline函数)。当inline函数的参数需要作为对象使用时必须添加。 crossinline关键字确保lambda参数不会非局部返回,防止lambda中的retu原创 2025-07-02 11:45:30 · 766 阅读 · 0 评论 -
kotlin中的Unit和Nothing 关键字
Kotlin的类型系统以Any为根类型,所有非空类型都是Any的子类。可空类型(如String?)通过"?"表示,在类型层次上可视为非空类型的父类。Unit是类似Java void的返回类型,但作为真实存在的单例对象,实现了类型一致性。Nothing表示永不返回的类型,用于异常函数和泛型空白填充。类型继承关系支持多继承,并通过子类型/父类型检查确保类型安全。这些特性共同构成了Kotlin强大的类型系统,既保持了严谨性又提供了灵活性。原创 2025-07-01 12:03:09 · 1097 阅读 · 0 评论 -
kotlin中的 object 关键字:kotlin单例,kotlin静态方法,kotlin伴生对象,伴生对象,companion
Kotlin中的object关键字有两种主要用法:对象表达式和对象声明。对象表达式用于创建匿名类(一次性使用),支持继承类和实现接口,常用于局部作用域;对象声明则用于实现单例模式(全局唯一实例),可以嵌套在其他类或对象中。此外,data object简化了单例对象的打印和比较,而companion object(伴生对象)替代了静态成员,可通过@JvmStatic生成真正的静态方法。两者的核心区别在于作用域与生命周期:对象表达式是临时的,对象声明是持久的单例。原创 2025-07-01 11:55:47 · 762 阅读 · 0 评论 -
kotlin委托:,委托属性,属性委托,委托类,Delegation,Delegated properties
Kotlin中的by关键字用于实现委托模式,主要分为两类:类/接口委托和属性委托。类委托通过by将接口实现委托给另一个对象,减少模板代码。属性委托则通过by将属性的读写操作委托给其他对象,支持多种标准委托方式: 属性转发:将属性委托给另一个属性,常用于字段重命名 懒加载:使用lazy实现首次访问时才初始化的特性 可观察属性:通过Delegates.observable监听属性变化 可否决变更:使用Delegates.vetoable拦截并决定是否接受新值 相比Java的手动委托,Kotlin的委托模式更简洁原创 2025-06-30 18:31:45 · 868 阅读 · 0 评论 -
kotlin 泛型,逆变,Covariant,协变,Variance,使用处型变,声明处型变,星投影,Star-Projections
泛型中涉及到的概念也不少,型变(Variance)、逆变(Contravariance)、协变(Covariance)、不变(Invariant).在 kotlin 中还有三个关键字inoutwherereified等,在java中同样也有?extends?super?这些概念是啥意思嘞?引用点概念说明型变(Variance)、协变(Covariance)、逆变(Contravariance)和不变(Invariant)是相关但不同的概念.原创 2025-06-30 18:30:22 · 1034 阅读 · 0 评论 -
kotlin作用域函数:run、let、also、apply、with
Kotlin作用域函数指南:let、run、with、apply和also的区别与应用 Kotlin提供了五种作用域函数(let、run、with、apply、also),它们都能在对象上下文中执行代码块,但各有特点: let和also使用it引用对象,let返回lambda结果,also返回对象本身 run和with使用this引用对象,run返回lambda结果,with是非扩展函数 apply使用this引用对象并返回对象本身 适用场景: let:处理非空对象或局部变量引入 apply:对象配置(属性原创 2025-06-29 09:55:57 · 1168 阅读 · 0 评论 -
Kotlin中的函数类型及Lambda表达式:SAM转换,带接收者的函数类型,匿名函数
Kotlin中的高阶函数与函数类型是函数式编程的重要概念。高阶函数指接受或返回函数的函数,是Kotlin协程和框架的基础。函数类型通过参数和返回值类型描述函数,如(String)->Unit表示接受String返回Unit的函数。带接收者的函数类型(如String.()->Unit)允许直接访问接收者对象的成员,与扩展函数类似但使用场景不同。函数实例化可通过Lambda、匿名函数或函数引用实现。带与不带接收者的函数类型可以互相转换,接收者相当于第一个参数。这些概念包括高阶函数、扩展函数、Lamb原创 2025-06-29 09:54:16 · 1056 阅读 · 0 评论 -
在kotlin协程中使用自定义CallAdapter处理错误
摘要 本文介绍如何在Kotlin项目中使用Retrofit 2.11.0配合协程进行网络请求。主要内容包括: 添加Retrofit和Gson转换器依赖 基础API接口声明和同步调用方式 协程支持改造:使用suspend函数直接返回数据对象 错误处理方案:通过try-catch或runCatching处理异常 针对特殊业务场景的自定义CallAdapter方案 定义NetworkResponse密封类区分成功、网络错误和其他异常状态 文章还讨论了如何处理历史遗留项目中HTTP状态码与业务逻辑混合的特殊情况,并原创 2025-06-26 10:20:43 · 1307 阅读 · 0 评论