与 Java 比较
Kotlin 解决了一些 Java 中的问题
Kotlin 通过以下措施修复了 Java 中一系列长期困扰我们的问题:
- 空引用由类型系统控制。
- 无原始类型
- Kotlin 中数组是不型变的
- 相对于 Java 的 SAM-转换,Kotlin 有更合适的函数类型
- 没有通配符的使用处型变
- Kotlin 没有受检异常
- Separate interfaces for read-only and mutable collections
Java 有而 Kotlin 没有的东西
- 受检异常
- 不是类的原生类型。字节码会尽可能试用原生类型,但不是显式可用的。
- 静态成员以伴生对象、 顶层函数、 扩展函数或者 @JvmStatic 取代。
- 通配符类型以声明处型变与类型投影取代。
- 三目操作符
a ? b : c
—— 以 if 表达式取代。 - Records
- Pattern Matching
- package-private visibility modifier
Kotlin 有而 Java 没有的东西
- Lambda 表达式 + 内联函数 = 高性能自定义控制结构
- 扩展函数
- 空安全
- 智能类型转换 (Java 16: Pattern Matching for instanceof)
- 字符串模板 (Java 21: String Templates (Preview))
- 属性
- 主构造函数
- 一等公民的委托
- 变量与属性类型的类型推断 (Java 10: Local-Variable Type Inference)
- 单例
- 声明处型变 & 类型投影
- 区间表达式
- 操作符重载
- 伴生对象
- 数据类
- 协程
- Top-level functions
- Default arguments
- Named parameters
- Infix functions
- Expect and actual declarations
- Explicit API mode and better control of API surface
下一步做什么?
了解如何: