Kotlin

首页 标签 Kotlin
# Kotlin #
关注
2984内容
|
14天前
| |
第073篇 字符串模板与原生字符串:多行文本的正确姿势
Kotlin字符串模板核心三点:①编译后转为`StringBuilder.append`链(全常量时优化为字面量);②原生字符串`"""..."""`保留缩进,必须用`trimIndent()`或`trimMargin()`清理;③Android中禁在循环内用模板拼接,否则触发O(n²)性能坑。安全上,模板不用于SQL/URL等需解析的场景。
|
14天前
| |
第070篇 扩展函数原理:它到底是不是给类加方法
Kotlin扩展函数本质是**静态方法**,编译后以接收者为首个参数,置于文件类中;调用依**静态类型决议**,不参与多态,**不访问private成员**,且**成员方法永远优先于同名扩展**——它是语法糖,而非真正的方法增强。
|
14天前
| |
第069篇 object 与 companion object:Kotlin 里的单例
本文深入剖析 `object` 与 `companion object` 的本质差异:二者虽均为单例,但字节码结构、初始化时机及 Java 可见性截然不同。`object` 编译为私有静态实例(饿汉式),而 `companion object` 是宿主类内的静态 `Companion` 实例,其初始化绑定类加载。`@JvmStatic` 和 `@JvmField` 不提升性能,而是改变 Java 调用形态与反射可见性。核心警示:慎用 `object` 持有可变状态,伴生对象避免耗时初始化——正确选型应基于作用域需求,而非便利性。
|
14天前
| |
第072篇 中缀表达式与运算符重载:可读性的双刃剑
Kotlin运算符重载比Java更彻底:不仅支持`+ - * /`等映射为`plus`/`minus`等约定函数,还允许任意单参函数通过`infix`声明实现中缀调用(如`a to b`)。核心原则是——符号语义必须与原始含义一致(`+`即相加,`-`即取反或相减),滥用将损害可读性。
|
14天前
| |
第062篇 val 与 var:不可变优先的工程哲学
`val` 与 `var` 是 Kotlin 不可变性设计的基石:`val` 仅保证**引用不可重绑定**,不约束对象内部状态(如 `val list = mutableListOf()` 仍可 `add`);`var` 允许引用变更。真正安全需结合只读类型(`List`)、`toList()` 拷贝、不可变数据类及并发原语——默认用 `val`,变则审慎用 `var`。
|
14天前
| |
第024篇 泛型基础:类型擦除到底擦了什么
本文深入剖析Java泛型本质:以“问题—擦除—运行时残留—错误表现”四步公式讲清原理;透彻解析类型擦除机制、桥接方法及常见坑(raw type、new T[]、instanceof泛型);结合可运行代码与Android实战场景,助你面试答出“为什么”,而非仅“怎么写”。
|
14天前
| |
第016篇 内部类与匿名内部类:回调写法的底层逻辑
本文深入解析Java内部类与匿名内部类的核心机制:非静态内部类(含匿名类)隐式持有外部实例引用,易致内存泄漏;静态内部类与无捕获lambda则无此问题。涵盖原理、典型坑点(如Handler泄漏)、绕坑方案及面试高分答法,强调从执行路径、数据流向和失败模式展开,助你脱颖而出。
|
14天前
| |
第015篇 抽象类与接口:到底该怎么选才不丢分
本文深入剖析抽象类与接口的本质差异:抽象类聚焦“is-a”复用(带状态、构造器、模板方法),接口强调“can-do”契约(多实现、default/private方法演进)。直击常考误区——常量接口滥用、default方法状态依赖、抽象类this逃逸,并结合Android实战(BaseActivity、OnClickListener)与Kotlin新特性,讲清原理、场景与避坑方案。
|
14天前
|
根与环:为什么你的 ArkTS 内存泄漏,和“循环引用“无关
打开任何一篇讲 ArkTS 内存泄漏的中文技术文章,你几乎都会看到同一个句式: "闭包形成了循环引用,导致 GC 无法回收,于是内存泄漏。" 然后配一张 A 持有 B、B 持有 A 的图,再加一句"要把引用置为 null"。 这个解释听起来自洽,传播得也足够广,但它在 ArkTS 的运行时模型里是错的——不是细节不准,而是因果搞反了。
|
2月前
|
Spring 之父的 Agent 框架 Embabel:把"规划"从 LLM 手里抢回来
Embabel是由Spring之父Rod Johnson打造的JVM原生智能体框架,基于GOAP目标导向规划与OODA闭环,实现确定性、可解释的多步任务编排。它构建于Spring AI之上,以强类型领域模型(Java/Kotlin)驱动动态路径规划,让LLM专注内容生成,而非流程决策,专为高可靠企业AI场景而生。
免费试用