空值安全
Kotlin 的主要功能之一是空值安全,它在編譯時期乾淨俐落地處理空值,而不是在執行時期遇到著名的 NullPointerException
。這透過空值宣告和表達「有值或無值」語意,使應用程式更安全,而無需支付包裝器(例如 Optional
)的成本。(Kotlin 允許將函數式結構與可空值一起使用。請參閱這份 Kotlin 空值安全綜合指南。)
雖然 Java 不允許您在其類型系統中表達空值安全,但 Spring 框架透過在 org.springframework.lang
套件中宣告的工具友善註解,提供了整個 Spring 框架 API 的空值安全。預設情況下,Kotlin 中使用的 Java API 類型被識別為平台類型,其空值檢查較為寬鬆。Kotlin 對 JSR-305 註解和 Spring 空值註解的支援為 Kotlin 開發人員提供了整個 Spring 框架 API 的空值安全,優點是在編譯時期處理與空值相關的問題。
Reactor 或 Spring Data 等函式庫提供空值安全的 API 來利用此功能。 |
您可以透過新增 -Xjsr305
編譯器標誌以及以下選項來設定 JSR-305 檢查:-Xjsr305={strict|warn|ignore}
。
對於 kotlin 1.1+ 版本,預設行為與 -Xjsr305=warn
相同。strict
值是讓從 Spring API 推斷的 Kotlin 類型中考慮 Spring 框架 API 空值安全所必需的,但應在了解 Spring API 空值宣告即使在次要版本之間也可能演變,並且未來可能會新增更多檢查的情況下使用。
泛型類型引數、可變引數和陣列元素空值安全尚不受支援,但應在即將發布的版本中提供。有關最新資訊,請參閱此討論。 |