【Android Studio&Kotlin】KotlinのNullable型の変数。null を許容する場合は、型名のあとに ?「String?」をつける

こんにちは。YOSHITAKA(@YOSHITA19704216)です。

初心者
「String?」の型の後ろにつける記号は何を示しているんですか?

よしたか
学んだことをアウトプットしていきます。

 

この記事を読むことで
  • KotlinのNullable型の変数を設定する方法がわかります。

Contents

KotlinのNullable型の変数を設定する方法

対象者

大前提
  • kotlinの初学者向けに書いています。

「String」と「String?」の違い

Kotlinでも通常の型にnullを代入しようとするとエラーになります。

Swiftのオプショナル型と同様、型名に『?』と付ける事でNullable型として扱う事ができます。

『StringのNullable型』を定義します。


<error 通常nullが入る事は許容されていない>
val value: String = null
<OK Nullableは型に?をつける>
val value: String? = null

『String型』をNullableでラップ(型の最後に?をつける)して『StringのNullable型』になります。

ポイント
  • どんな型でも型の最後に『?』をつければNullable。

スマートキャスト

KotlinのNullable型は、そのままでは通常の型として扱う事ができません。

nullチェックを行う事で通常の型として扱う事ができます。

『スマートキャスト』で通常型として扱います。

『if 文』のスコープ内では『StringのNullable型』が『String型』として使えます。


val value: String? = null
if (value != null) {
<スコープ内ではNullableではなくなる>
   value.length
}
ポイント
  • 『if (変数 != null)』でnullチェックをすれば、スコープ内は通常型として扱えます。

『?.』 安全呼び出し

Kotlinでは『?.』演算子で、Nullable型のままメソッドをつなげる事ができます。


val value: String? = null
val valueCount = value?.length

<!nullが返り、valueCountにnullが入る>
null
ポイント
  • 『Nullable型.Nullable型.Nullable型』のようにチェインする場合も可能で、nullになっている時点でnullを返してくれます。

『?:』 エルビス演算子

KotlinのNullable型を安全に扱う方法です。

//Nullable型設定
val value: String? = null
//エルピス演算子
val valueCount = value?.length ?: 0
<上記ではnullとなる為「0」を返す>
0
上記の例では『value?.length』がnullなので『エルビス演算子』で0を返しています。
ポイント
  • 安全呼び出しとエルビス演算子の複合技です。

『!!演算子』 強制アンラップ 

『!!演算子』を使う事でNullable型を、強制的に通常の型にする事ができます。

ただし、簡単に通常の型として扱うようにできますが、nullだったらクラッシュする為オススメしません。

//
val value: String? = null
//強制アンラップ
val valueCount = value!!.length

<error! 上記ではvalueがnullとなる為、lengthにアクセスできずクラッシュ>
kotlin.KotlinNullPointerException
ポイント
  • Kotlinでも基本的に使わない方が無難です。

まとめ

今回はKotlinのNullable型の変数を設定する方法についてお伝えしました。

 

※プログラミングは習得中ですので、参考程度に記事を読んでください。

 

参考はこちら

Kotlinでオプショナル型(Optional)の変数を扱う方法

https://www.webbanana.org/goroku/2018/07/21/343.php

あなたは「Web集客」に限界を感じていませんか?

サイトをただ作るだけで満足ですか?

あなたのサービスやコンテンツはとっても有益なものがたくさんあります。

良いコンテンツも埋もれてしまっては全く意味がありません。

正しい知識と実践で、SEO対策はもちろん、ユーザビリティーを考えたサイトを作りませんか?

私と歩めばWebマーケティング知識とWordPressスキルが定着し、サイト回遊率、再訪問がアップします。

しかも、これだけでは終わりません!!

その先の「攻めのメディア」と組み合わせ、あなたのサービスを広めて売上を伸ばしていきます。

サイトを育てて、長い間愛されることのできるWordPressサイトからの集客導線(ゴールデンルート)を一緒に作りませんか?

↓ ↓ ↓ ↓ ↓ ↓ 

おすすめの記事