与 Java 比较
最终更新: 2024/03/21
Kotlin 中得到解决的一些 Java 问题
Java 中长期困扰的一系列问题, 在 Kotlin 得到了解决:
- Null 引用 由类型系统管理.
- 没有原生类型(raw type)
- Kotlin 中的数组是 类型不可变的
- 与 Java 中的 SAM 变换方案相反, Kotlin 中存在专门的 函数类型(function type)
- 不使用通配符的 使用处类型变异(Use-site variance)
- Kotlin 中不存在受控 异常
- 集合的接口定义区分为只读集合与可变集合
Java 中有, 而 Kotlin 中没有的功能
- 受控异常
- 不是类的 基本数据类型. Kotlin 编译产生的字节码会尽可能使用基本数据类型, 但在 Kotlin 源代码中并不能明确的使用基本数据类型.
- 静态成员 在 Kotlin 中由以下功能代替: 同伴对象(Companion Object), 顶级(top-level) 函数, 扩展(extension) 函数, 以及 @JvmStatic 注解.
- 通配符类型(Wildcard-type) 在 Kotlin 中由以下功能代替: 声明处类型变异(declaration-site variance) 以及 类型投射(type projection).
- 条件(三元)运算符
a ? b : c
在 Kotlin 中由以下功能代替: if 表达式. - 记录类(Record)
- 记录模式(Record Pattern)
- Java 22: 未命名变量和模式
Kotlin 中有, 而 Java 中没有的功能
- Lambda 表达式 + 内联函数 = 实现自定义的控制结构
- 扩展函数
- Null 值安全性
- 类型智能转换 (Java 16: 对 instanceof 的模式匹配)
- 字符串模板 (Java 21: 字符串模板 (预览版))
- 属性
- 主构造器
- 委托(First-class delegation)
- 变量和属性的类型推断 (Java 10: 局部变量的类型推断)
- 单例(Singleton)
- 声明处类型变异(Declaration-site variance) 和类型投射(Type projection)
- 值范围表达式
- 操作符重载
- 同伴对象(Companion object)
- 数据类
- 协程
- 顶级(Top Level)函数
- 默认参数
- 命名参数
- 中缀(Infix)函数
- 预期声明与实际声明
下一步做什么?
学习: