空安全

Kotlin 的關鍵特性之一是空安全,它在編譯時乾淨地處理 null 值。透過可空性宣告和表達“有值或無值”的語義(而無需付出諸如 Optional 這樣的包裝器的代價),這使得應用程式更安全。(Kotlin 允許對可空值使用函式式構造。參閱這篇關於 Kotlin 空安全的綜合指南。)

儘管 Java 不允許在其型別系統中表達空安全,但 Spring Data API 使用在 org.springframework.lang 包中宣告的、對 JSR-305 工具友好的註解進行了標註。預設情況下,Kotlin 中使用的 Java API 型別被識別為平臺型別,對其的空檢查是寬鬆的。Kotlin 對 JSR-305 註解的支援以及 Spring 的可空性註解為 Kotlin 開發者提供了整個 Spring Data API 的空安全,其優勢在於可以在編譯時處理與 null 相關的問題。

參閱倉庫方法的空處理,瞭解空安全如何應用於 Spring Data 倉庫。

您可以透過新增 `-Xjsr305` 編譯器標誌並帶上以下選項來配置 JSR-305 檢查:`-Xjsr305={strict|warn|ignore}`。

對於 Kotlin 1.1+ 版本,預設行為與 `-Xjsr305=warn` 相同。考慮 Spring Data API 空安全需要使用 `strict` 值。從 Spring API 推斷出的 Kotlin 型別,應該在瞭解 Spring API 可空性宣告可能會發生變化(即使是在次要版本之間)以及將來可能會新增更多檢查的情況下使用。

泛型型別引數、可變引數和陣列元素的可空性尚不受支援,但應會在即將釋出的版本中提供。