Null 安全

Kotlin 的一個關鍵特性是Null 安全,它可以在編譯時乾淨地處理 null 值,而不是在執行時遇到臭名昭著的 NullPointerException。這透過可空性宣告和表達“有值或無值”的語義,而無需付出如 Optional 等包裝類的代價,從而提高了應用的安全性。(Kotlin 允許對可空值使用函式式構造。請參閱這篇關於 Kotlin Null 安全的全面指南。)

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

諸如 Reactor 或 Spring Data 等庫提供了 Null 安全的 API 來利用此特性。

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

對於 Kotlin 1.1+ 版本,預設行為與 -Xjsr305=warn 相同。strict 值是必需的,以便在從 Spring API 推斷出的 Kotlin 型別中考慮 Spring Framework API 的 Null 安全性,但使用時應瞭解 Spring API 的可空性宣告即使在次要版本之間也可能發生變化,並且將來可能會新增更多檢查。

泛型型別引數、可變引數和陣列元素的可空性尚不支援,但應該會在即將釋出的版本中支援。請參閱此討論以獲取最新資訊。