与 Java 的比较
Kotlin 解决的一些 Java 问题
Kotlin 解决了 Java 存在的系列问题:
- 空引用由类型系统控制。
- 无原始类型
- Kotlin 中的数组是不变的 (invariant)
- Kotlin 拥有真正的函数类型,而非 Java 的 SAM 转换
- 使用处协变,无需通配符
- Kotlin 没有受检异常
- 针对只读集合和可变集合的独立接口
Java 拥有而 Kotlin 没有的特性
- 受检异常
- 原始类型,它们不是类。字节码在可能的情况下会使用原始类型,但它们并非显式可用。
- 静态成员被伴生对象、顶层函数、扩展函数或
@JvmStatic
取代。 - 通配符类型被声明处协变和类型投影取代。
- 三元运算符
a ? b : c
被 if 表达式取代。 - 记录 (Records)
- 模式匹配 (Pattern Matching)
- 包私有 (package-private) 可见性修饰符
Kotlin 拥有而 Java 没有的特性
- Lambda 表达式 + 内联函数 = 高性能的自定义控制结构
- 扩展函数
- 空安全
- 智能转换 (Java 16: instanceof 的模式匹配)
- 字符串模板 (Java 21: 字符串模板(预览))
- 属性
- 主构造函数
- 一等委托
- 变量和属性类型的类型推断 (Java 10: 局部变量类型推断)
- 单例
- 声明处协变与类型投影
- 范围表达式
- 运算符重载
- 伴生对象
- 数据类
- 协程
- 顶层函数
- 默认参数
- 命名参数
- 中缀函数
- expect 与 actual 声明
- 显式 API 模式和更好地控制 API 面
接下来?
了解如何: