Javaと違いKotlinはObjectをNullであることを禁止しています。
Javaでは、以下のようなコードを書くことができました。

しかしKotlinで同じコードを書くとコンパイルエラーになります。

Error:(3, 24) Kotlin: Null can not be a value of a non-null type String

上記のようなエラーメッセージが吐かれました。

Javaのようにnullを代入したい場合は、?キーワードを以下のように使用します。

型の後に?をつけることでnullを代入してもコンパイルエラーが起きなくなりました。
また、中身を出力するとnullと表示されます。

また、nullに代入したオブジェクトに文字列操作などnullでは動作しえない関数を呼び出すと、
ここでもコンパイルエラーになり、実行自体ができないようになっています。

Stringオブジェクトの関数toUpperCase()を呼び出すところで、コンパイルエラーになります。

以上のようにKotlinでは、npeを出させないような工夫がされています。

 

Pocket