1. 概要

Kotlinでは、lazy-initializeまたはlate-initializeの変数とプロパティに対していくつかの異なるアプローチがあります。

このクイックチュートリアルでは、lateinit変数の初期化ステータスを確認する方法を学習します。

2. 後期初期化

lateinit 変数を使用して、変数の初期化を延期することができます。 これは、依存性注入またはテストフレームワークを操作するときに特に役立ちます。

便利ですが、使用中の大きな注意点が1つあります。初期化されていないlateinit変数にアクセスすると、Kotlinは例外をスローします:

private lateinit var answer: String

@Test(expected = UninitializedPropertyAccessException::class)
fun givenLateInit_WhenNotInitialized_ShouldThrowAnException() {
    answer.length
}

UninitializedPropertyAccessException 例外は、基になる変数がまだ初期化されていないという事実を示します。

初期化ステータスを確認するために、プロパティリファレンスisInitializedメソッドを使用できます。

assertFalse { this::answer.isInitialized }

ここで、 :: 構文を使用して、プロパティへの参照を取得します。 変数に何かを割り当てると、これは明らかにtrueを返します。

answer = "42"
assertTrue { this::answer.isInitialized }

この機能は、 Kotlin1.2以降のバージョンでのみ使用できることに注意してください。

3. 結論

このチュートリアルでは、lateinit変数の初期化ステータスを確認する方法を説明しました。

いつものように、サンプルコードはGitHubから入手できます。