kotlin Null Safety --- お前 誰? --- 自己紹介 ・名前:アベヒロキ (
@hATrayflood
) ・職業:自宅サーバ管理者 ・URL:
rayflood.org/diary-temp/
・地元:東部町 --- kotlin とは --- JetBrains (IntelliJ) 開発 --- alt java っぽい言語 --- javaと相互 呼び出し可能 --- android 公式言語 --- 基本的な文法
--- . ∧_∧ ( ´∀`)< ぬるぽ --- ( ・∀・) | | ガッ と ) | | Y /ノ 人 / ) < >__Λ ∩ _/し' // V`Д´)/ ←>>1 (_フ彡 / --- を軽減できる 仕組み --- 基本 --- val hoge: String --- val fuga: String? --- 違いは? --- 末尾の ? --- val hoge: String null不可 --- val fuga: String? null許容 --- val hoge: String = null コンパイルエラー --- 半ば型が違うもの として扱われる --- fun setHoge(hoge: String) { this.hoge = hoge } --- fun getFuga(): String? { return null } --- メソッドの引数と 戻り値も同様 --- 基本2 --- fun setHoge(hoge: String) { this.hoge = hoge } fun getFuga(): String? { return "fuga" } val fuga = getFuga() setHoge(fuga) --- コンパイルエラー fugaはnullの可能性があるので nullを許容しないsetHoge() には渡せない --- どうするか --- val fuga = getFuga() if(fuga != null){ setHoge(fuga) } --- nullチェック で渡せる --- val fuga = getFuga() setHoge(fuga ?: "fuga") --- ?: 演算子で nullの代替値を 設定できる --- fun getHage(): Hage? { return Hage() } val hage = getHage() hage.setHoge("hoge") --- これもコンパイルエラー hageはnullの可能性があるので setHoge()を実行できない ぬるぽの危険あり --- どうするか --- val hage = getHage() hage?.setHoge("hoge") --- 変数名の末尾に ? をつけると メソッド実行時に自動的に nullチェック nullだったらスルーする --- 手動nullチェックでも可 ?: 演算子でも可能だけど 使い道はあんまりなさげ --- 禁じ手 --- val hage = getHage() hage!!.setHoge("hoge") --- 変数名の末尾に !! をつけると メソッド実行時にnullチェック せず強引に実行します ぬるぽの危険あり --- 禁じ手2 --- val hage = getHage() as Hage hage.setHoge("hoge") --- as でキャストすると 強引に ? を外せます 中身はnullもあるので ぬるぽの危険あり --- まとめ --- 適切に使えば コンパイル時点で ぬるぽ回避可能 なのは大きい --- 抜け道もあるので 気を付けよう (特に外部ライブラリ) --- 最近の愛読書
---
※いずれもDL版もしくはsteam版 --- ・リンク集 twitter @hATrayflood
Kotlin Programming Language
KotlinがAndroid開発言語になる
【!ってなんだ】KotlinとJava、nullとPlatformType【NullableにNotNull】 - Qiita
JavaプログラマがKotlinでつまづきがちなところ - Qiita
Kotlin : as, !, ? 周りのチートシート - i++