與 Java 的比較
Kotlin 解決了 Java 的一些問題
Kotlin 解決了 Java 遇到的一系列問題:
- 空值參考由類型系統控制。
- 無裸類型
- Kotlin 中的陣列是不變的
- Kotlin 具有適當的函式類型,而非 Java 的 SAM 轉換。
- 使用處變數 (Use-site variance) 而無萬用字元 (wildcards)。
- Kotlin 沒有受檢查的例外。
- 讀取專用與可變集合的獨立介面。
Java 擁有但 Kotlin 沒有的功能
- 受檢查例外 (Checked exceptions)
- 非類別的基本類型。位元組碼會盡可能使用基本類型,但它們並非明確可用。
- 靜態成員已被伴動物件、頂層函式、擴充函式或
@JvmStatic
取代。 - 萬用字元類型 (Wildcard-types) 已被宣告處變數 (declaration-site variance) 和類型投影 (type projections) 取代。
- 三元運算子
a ? b : c
已被 if 表達式取代。 - 記錄 (Records)
- 模式比對 (Pattern Matching)
package-private
可見性修飾符
Kotlin 擁有但 Java 沒有的功能
- Lambda 表達式 + 行內函式 = 高效能的自訂控制結構
- 擴充函式
- 空值安全
- 智慧型轉型 (Smart casts) (Java 16:
instanceof
的模式比對) - 字串模板 (String templates) (Java 21: 字串模板 (預覽))
- 屬性
- 主要建構函式
- 一級委託
- 變數和屬性類型的類型推斷 (Type inference) (Java 10: 局部變數類型推斷)
- 單例
- 宣告處變數 (Declaration-site variance) & 類型投影 (Type projections)
- 範圍表達式
- 運算子重載
- 伴動物件
- 資料類別
- 協程
- 頂層函式
- 帶有預設值的參數
- 命名參數
- 中綴函式
- 期望與實際宣告
- 顯式 API 模式 和對 API 介面的更好控制
下一步是什麼?
學習如何:
- 在 Java 和 Kotlin 中執行字串的典型任務。
- 在 Java 和 Kotlin 中執行集合的典型任務。
- 處理 Java 和 Kotlin 中的空值性。