與 Java 的比較
Kotlin 解決的一些 Java 問題
Kotlin 修正了 Java 存在的一系列問題:
- Null 參照透過型別系統控制。
- 無未加工型別
- Kotlin 中的陣列具有不變性 (invariant)
- Kotlin 具有正確的函式型別,而非 Java 的 SAM 轉換
- 不需萬用字元的使用點差異
- Kotlin 沒有受檢例外
- 唯讀與可變集合具有獨立介面
Java 擁有但 Kotlin 沒有的特性
- 受檢例外
- 並非類別的原始型別。位元組碼會盡可能使用原始型別,但它們無法被明確地使用。
- static 成員被伴隨物件、頂層函式、擴充函式或 @JvmStatic 取代。
- 萬用字元型別被宣告點差異與型別投影取代。
- 三元運算子
a ? b : c被 if 運算式取代。 - 記錄 (Records)
- 套件私有 (package-private) 可見性修飾詞
Kotlin 雖然沒有模式配對,但 Kotlin 中的智慧轉型提供了與 Java 中的模式配對類似的功能。
欲了解更多資訊,請觀看 JetBrains 官方 Kotlin 頻道上的這段影片。
Kotlin 擁有但 Java 沒有的特性
- Lambda 運算式 + 內嵌函式 = 高效能的自訂控制結構
- 擴充函式
- Null 安全
- 字串範本
- 屬性
- 主建構函數
- 一等委派
- 變數與屬性型別的型別推論 (Java 10:區域變數型別推論)
- 單例 (Singletons)
- 宣告點差異與型別投影
- 區間運算式
- 運算子多載
- 伴隨物件
- 資料類別
- 協同程式
- 頂層函式
- 具備預設值的參數
- 具名參數
- 中綴函式
- expect 與 actual 宣告
- 顯式 API 模式以及更佳的 API 介面控制
Java 雖然沒有智慧轉型,但模式配對提供了與 Kotlin 中的智慧轉型類似的功能。
欲了解更多資訊,請觀看 JetBrains 官方 Kotlin 頻道上的這段影片。
下一步
了解如何:
