【Kotlin】Null安全のメリットがピンとこなかったので自分でわかるまで調べてみました。
はじめに
kotlin・Java初心者なのでコードリーディングをしていたら、わからないことがたくさんあります。本日はNull安全がわからなかったので調べて軽く備忘録用に。
※調べが足りない部分もあると思いますが、不備などがあれば教えていただければ助かります。
そもそもNullとは?
値が入ってないよ〜!何も参照してないよ〜!って意味。
kotlinはJavaと違って、初期値を入力していないとコンパイルエラーが出る仕組みなのです。(これがNull安全なのだが、この段階では筆者はメリットがわからなかった)
val number:Int = null // compile error val number:Int = 1 //OK
Javaだとnull
が通る
Int number = null; //OK
この2つを比較した上で今回の登場人物コンパイルエラー
と実行時エラー
コンパイルエラー
val number:Int = null println(number) //Error: Kotlin: Null can not be a value of a non-null type Int
実行時エラー
目的の処理の時に不具合が発生する
Android開発の例だと、intent
で値の受け渡しがnull
の時などに落ちる時がある。これはデバッグが大変だった。(もしかするといい方法があるかもしれない)
結論
Null安全は実行時エラーの可能性があるところをコンパイル段階でエラー出してくれるありがたい存在。
NonNullとNullable
NonNull
は、Nullを許容しないデフォルトの型
Nullable
は、Nullを許容してくれる型
NonNullはこれまでに説明した通りなので、Nullableを軽く説明
やはりどうしても、null
が入ってしまうときがある!
例)フォーム入力などはユーザー入力後出ないと結果がわからないので、Nullにする必要性がある。
このような場合は、型の定義の後に?
をつけてあげれば、Nullable型になりNullを入れてもコンパイルエラーではなくなる!
val name:String? = null val age:Int? = null val live:String? = null : :
そこから先はNullableの扱い方で、大きく分けて!!演算子、安全呼び出し、エルビス演算子の3つがある。
これに関しては、後ほど記事にするかも。。
サーバーサイドも手をつけないと・・