lateinit変数がKotlinで初期化されているかどうかの確認
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でから入手できます。