この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Kotlinでよく使う便利機能を紹介します
lateinit
遅延初期化に使います。
class Sample : AppCompatActivity() {
private lateinit var name: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
name = intent.getStringExtra("WAGASHI") ?: "Daihuku" // エルビス演算子
println(name)
}
}
みたいに使います。
Javaだとメンバ変数で
private String name = ""
みたいな書き方をすると思うんですが、これだと再代入する前に呼び出されると空文字が返ってしまうのでよくないですね。
ちなみにKotlinで初期化する前にnameを呼び出すと落ちます。
オプショナル
val name = null
name.toUpperCase()
みたいなことをすると落ちます。
val name = null
name?.toUpperCase()
にすると何も起こらないため落ちないです。
他にも、
val num = 1
num as String //落ちる
num as? String //nullになる
?を使うとこんな感じになります。
型を調べる
Javaだと、.getClass()で確認できました。
KotlinにはgetClass()が無いので、
val num = 1
println(num.javaClass) //Javaの型が取得できる
println(num.javaClass.kotlin) //Kotlinの型が取得できる
.javaClassだとどんな型か調べることができました。
特定の型かどうかを調べたいときには、 is が使えます。
val num = 1
println(num is Int) // True
これはJavaではinstanceOf()を使っていた処理です。
テンプレート式
文字列の中に変数を入れられます。
// Java
Integer num = 1;
println("num is " + num);
// Kotlin
val num = 1
println("num is $num")
// 長い処理
println("num x2 is ${num * 2}")
AndroiStudioのConvert Java File to Kotlin File
これはKotlinの機能ではないんですが、Android StudioにはJavaをKotlinに変換する機能があります。
Code -> Convert Java File to Kotlin File
これが凄く便利です。
何か処理をしたくてサンプルコードを探したけどJavaしかないってときにJavaのコードをKotlinに変換します。
コンパイル時や実行時にエラーが出ることは経験上ないのでおすすめ。
まとめ
Kotlinを使うとNPEが起こりにくい書き方ができます。
また、同じ処理でもJavaに比べると簡潔に書けるのが魅力です。
今回は書きませんでしたが、コレクションの種類や操作関数も豊富なのでコード量が減らせたり安全な設計ができます。