Kotlinは、Javaと比較してNull安全性を強化したプログラミング言語です。この記事では、KotlinのNullable型(?を持つ型)とNon-Nullable型(?を持たない型)の違いについて詳しく説明します。また、具体的なコード例を通じて、どのように使われるかを示します。
Nullable型とNon-Nullable型の違い
Nullable型
Nullable型は、値がnullを持つ可能性がある場合に使用されます。これは、変数がnullを許容することを示します。Nullable型は、変数の宣言時に型名の後に?
を付けて定義します。
例えば、次のコードはNullable型の変数を宣言しています。
var name: String? = null
この場合、name
変数は文字列またはnullを格納できます。
Non-Nullable型
Non-Nullable型は、nullを許容しない型です。値がnullになる可能性がないことを保証します。Non-Nullable型は、通常の型宣言と同じように定義します。
例えば、次のコードはNon-Nullable型の変数を宣言しています。
var age: Int = 25
この場合、age
変数は整数型で、nullを格納できません。
Nullable型とNon-Nullable型の使用例
Nullable型とNon-Nullable型の違いは、実際のコードでどのように影響するかを示すことができます。
fun main() {
var nullableName: String? = null
var nonNullableName: String = "John"
println(nullableName?.length) // null
println(nonNullableName.length) // 4
nullableName = "Alice"
nonNullableName = "Bob"
println(nullableName?.length) // 5
println(nonNullableName.length) // 3
}
上記の例では、nullableName
変数にはnullが設定でき、nonNullableName
変数にはnullを設定できません。そのため、Nullable型の変数を使用する場合、nullチェックを行って安全にアクセスする必要があります(?.
演算子を使用)。一方、Non-Nullable型の変数は、nullチェックなしで直接アクセスできます。
KotlinのNullable型とNon-Nullable型は、プログラムの安全性とエラーの早期検出に役立ちます。適切に使うことで、nullに関連するバグを最小限に抑えることができます。