null セーフ

Kotlin の主要な機能の 1 つは null-safety (英語) です。これは、実行時に有名な NullPointerException にぶつかるのではなく、コンパイル時に null 値をきれいに処理します。これにより、Optional などのラッパーのコストを支払うことなく、null 可能性の宣言と「値または値なし」のセマンティクスを表現することにより、アプリケーションがより安全になります。(Kotlin では、null 許容値を持つ関数構成体を使用できます。Kotlin null-safety の包括的なガイド (英語) を参照してください。)

Java では、その型システムで null 安全性を表現できませんが、Spring Framework は、org.springframework.lang パッケージで宣言されたツールフレンドリーなアノテーションを介して、Spring Framework API 全体の null 安全性を提供します。デフォルトでは、Kotlin で使用される Java API の型はプラットフォーム型 (英語) として認識され、そのために null チェックが緩和されます。JSR-305 アノテーションの Kotlin サポート (英語) および Spring の NULL 可能性アノテーションは、Spring Framework API 全体に対して Kotlin 開発者に 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-safety を考慮する必要がありますが、マイナーリリース間でも Spring API nullability 宣言が進化する可能性があり、将来さらに多くのチェックが追加される可能性があるという知識とともに使用する必要があります。

ジェネリクス型の引数、可変引数、配列要素の NULL 可能性はまだサポートされていませんが、今後のリリースでサポートされる予定です。最新情報については、このディスカッション [GitHub] (英語) を参照してください。