Kotlin null safety
Null safety
トニー・ホールはnullが値がないことを示すことを提案した.
「10億ドルの誤り」(10億ドルの誤り)を振り返ったという.
nullを初期化して参照しないと、プログラムの終了とともに
赤い例外に遭遇します.
これをNPE(Null Pointer Exception)と呼びます.
Kotlinでは、
nullセキュリティの概念を導入した.
Javaのように一般的なメソッドを使用するnull宣言は許可されません.
Nullable vs Non-null
Kotlinでは、デフォルト値はNon-nullです.
下図のように.
Null can not be a value of a non-null type int
変数aはnon-nullタイプのintなのでnullにはできません.
では、Kotlinはnullを宣言できませんか?
いいえ、心配しないでください.
safe call(?.)
スタジオからエラーメッセージが出ます.
nullableタイプは、メンバーやメソッド呼び出しなどのフィルタに使用されます.
? 演算子を追加します.
bはnullではないのでlength、
cはnon-nullだから?演算子を必要とせずにlengthを正常に返します.
!! 演算子
!! 演算子のnullable type値は
nullでないことを確認します.
non-nullタイプを明示的に返します.
nullの場合、NPEが放出されます.
したがってnullでないと判定された場合にのみ、
使用を推奨します.
赤の例外に直面することもできます
こわがる
elvis operator (?:)
エルビス演算子と呼ばれています.
演算子を下ろして見ると、アメリカの歌手エルビス・プレスリーの頭のようだ.
名前が付けられた名前です.
左側の値が演算子に対してnullの場合、
右の値の演算子を返します.
簡単に考えたら...
3つの演算子のnullバージョンと考えられます.
エルビス演算子の右側にある100を返します.
整理する
前述したように、Kotlinのnullセキュリティ
NPE防止のために導入された概念.
言語そのものにおいてNPEを扱うために多様な方法が用いられる
ジェニーン・NPEに柔軟に対応できることをヒントにしてください.
アプリケーションの完了度が向上した結果が得られます.
この布告は筆者が学んだことに基づいて整理された.
不足や間違いがある可能性があります.
詳細は正式な書類を参照してください.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
トニー・ホールはnullが値がないことを示すことを提案した.
「10億ドルの誤り」(10億ドルの誤り)を振り返ったという.
nullを初期化して参照しないと、プログラムの終了とともに
赤い例外に遭遇します.
これをNPE(Null Pointer Exception)と呼びます.
Kotlinでは、
nullセキュリティの概念を導入した.
Javaのように一般的なメソッドを使用するnull宣言は許可されません.
Nullable vs Non-null
Kotlinでは、デフォルト値はNon-nullです.
下図のように.
var a: Int = null // error
println(a)
Null can not be a value of a non-null type int
変数aはnon-nullタイプのintなのでnullにはできません.
では、Kotlinはnullを宣言できませんか?
いいえ、心配しないでください.
var a: Int? = null
println(a) // output null
データ型の疑問符(?)貼り付けはNullable typeにすることができます.safe call(?.)
var a: String? = null
println(a.length) // returned null
aのメンバーまたはメソッドを呼び出そうとした場合は、上記のようにnullable stringです.スタジオからエラーメッセージが出ます.
nullableタイプは、メンバーやメソッド呼び出しなどのフィルタに使用されます.
? 演算子を追加します.
var a: String? = null
var b: String? = "Velog"
var c: String = "JeepChief"
println(a?.length) // null
println(b?.length) // output 5
println(c.length) // output 9
aはnullなのでnullを返します.bはnullではないのでlength、
cはnon-nullだから?演算子を必要とせずにlengthを正常に返します.
!! 演算子
!! 演算子のnullable type値は
nullでないことを確認します.
non-nullタイプを明示的に返します.
nullの場合、NPEが放出されます.
したがってnullでないと判定された場合にのみ、
使用を推奨します.
赤の例外に直面することもできます
var a: String? = "Kotlin"
var b: String? = null
println(a!!.length) // output 6
println(b!!.length) // throw NPE
こわがる
elvis operator (?:)
エルビス演算子と呼ばれています.
演算子を下ろして見ると、アメリカの歌手エルビス・プレスリーの頭のようだ.
名前が付けられた名前です.
左側の値が演算子に対してnullの場合、
右の値の演算子を返します.
簡単に考えたら...
3つの演算子のnullバージョンと考えられます.
var a: Int? = null
println(a ?: 100) // output 100
上のコードでは、aはnullです.エルビス演算子の右側にある100を返します.
println()
出力100.整理する
前述したように、Kotlinのnullセキュリティ
NPE防止のために導入された概念.
言語そのものにおいてNPEを扱うために多様な方法が用いられる
ジェニーン・NPEに柔軟に対応できることをヒントにしてください.
アプリケーションの完了度が向上した結果が得られます.
この布告は筆者が学んだことに基づいて整理された.
不足や間違いがある可能性があります.
詳細は正式な書類を参照してください.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
Reference
この問題について(Kotlin null safety), 我々は、より多くの情報をここで見つけました https://velog.io/@jeep_chief_14/Kotlin-null-safetyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol