その他
    ホーム 技術発信 DoRuby Kotlinの便利機能
    Kotlinの便利機能
     

    Kotlinの便利機能

    この記事はアピリッツの技術ブログ「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に比べると簡潔に書けるのが魅力です。

    今回は書きませんでしたが、コレクションの種類や操作関数も豊富なのでコード量が減らせたり安全な設計ができます。