【Kotlin入門】初心者のためにenum(列挙型)の使い方を徹底解説


Kotlinでenumの使い方がよくわからない
そもそもenumってなんだろうか・・・

Kotlinでenumを使おうと思ってもなんだかよく使い方がわからなかったり、そもそもenumについてよくわかっていなかったりする人はいませんか?

こんにちは!エンジニアのかいです。Kotlinをこれから始めようとしている人、もしくは始めたての人であればプログラミングの基本であるenumについて悩んでいる人もいますよね。

そこで本日はKotlin初心者の方を対象にenumの様々な使い方からそもそもenumとはなんだろうか、という点についてわかりやすく解説していきます。

この記事はこんな人のために書きました。

  • Kotlinでenumを使いこなしたい
  • メソッドを定義してみたりしたい
  • enumとは、という基礎から学びたい

Kotlin enumとは

それでは、いきなりenumの書き方を説明して行く前にまずは、enumとはそもそもどんなものなのだろうかという点について解説していきます。

enumとは別名列挙型などとも呼ばれ、定数を列挙する場合などに使われます。中で定義されたものは列挙子などと呼ばれますね。

enumを使うメリットもここで紹介したいところですが、基本的な使い方を学んだ上での方がメリットが理解しやすいと思うので使い方を説明後最終章で解説していきます。

enumの使い方

それでは実際の使い方をみていきましょう。

enum class myEnum{
    TOKYO,
    KANAGAWA,
    CHIBA
}

fun main() {
    println(myEnum.CHIBA)
}
CHIBA

このように、enum classで指定してやると、列挙型クラスとして認識されます。.列挙子としてやることでその値が取り出せていますね。

enumをfor文で回す

次はfor文を使ってみましょう。

enum class myEnum{
    TOKYO,
    KANAGAWA,
    CHIBA
}

fun main() {
    for(pre in myEnum.values()){
        println(pre)
    }
}
TOKYO
KANAGAWA
CHIBA

ここでのミソは.values()というメソッドを利用することで、クラスのvalueが取得できます。この時点では返り値はArray<EnumClass>なのでfor文で回せば全ての値が取得できますね。

メソッドを定義してみよう

さて、次はenumクラス内でメソッドを定義してみましょう。

enum class myEnum{
    TOKYO{
        override fun prefecure(): String {
            return "I'm from Tokyo!"
        }
    },
    KANAGAWA{
        override fun prefecure(): String {
            return "I'm from Kanavawa!"
        }
    },
    CHIBA{
        override fun prefecure(): String {
        return "I'm from Chiba!"
        }
    };

    abstract fun prefecure(): String
}

fun main() {
    for(pre in myEnum.values()){
        println(pre.prefecure())
    }
}
I'm from Tokyo!
I'm from Kanavawa!
I'm from Chiba!

このように、抽象メソッドをオーバーライドしてあげることで、定数値ごとに振る舞いを変えることができます。ちなみによりKotlin的には以下のように書きます。

enum class myEnum{
    TOKYO{ override fun prefecure(): String = "I'm from Tokyo!" },
    KANAGAWA{ override fun prefecure(): String = "I'm from Kanavawa!" },
    CHIBA{ override fun prefecure(): String = "I'm from Chiba!" };

    abstract fun prefecure(): String
}

fun main() {
    for(pre in myEnum.values()){
        println(pre.prefecure())
    }
}
I'm from Tokyo!
I'm from Kanavawa!
I'm from Chiba!

だいぶスッキリしましたね。

引数をもたせてみよう

KotlinのEnumの定数値にはパラメータを持たすことができます。各定数値にIDというパラメータを付与してみます。

enum class myEnum(val id: Int){
    TOKYO(1),
    KANAGAWA(2),
    CHIBA(3)

}

fun main() {
    println(myEnum.TOKYO.id)
    for (pre in myEnum.values()){
        println("${pre.name} ${pre.id}")
    }
}
1
TOKYO 1
KANAGAWA 2
CHIBA 3

このように引数にもたせることによって付随するパラメータを与えることができます。以下のように複数設定することも可能です。

enum class myEnum(val id: Int, val jp: String){
    TOKYO(1, "東京"),
    KANAGAWA(2, "神奈川"),
    CHIBA(3, "千葉")

}

fun main() {
    for (pre in myEnum.values()){
        println("${pre.name} ${pre.id} ${pre.jp}")
    }
}
TOKYO 1 東京
KANAGAWA 2 神奈川
CHIBA 3 千葉

enumを使うメリット

さて、ここまで一通りenumの使い方をみてきましたが、実際にenumを使うと何が良いのかということについても補足しておきます。

まず第一のメリットは安全性が高まるということですね。つまり、あらかじめ決まった定数をまとめてセットしておくことでそれ以外が指定されることを防ぎプログラムが予想外の動作をすることを防げます。

あとは、利用する時にどんな引数が取れるか明確にわかるので可読性が高く、利用しやすいですね。また、ただ定数をまとめるだけでなく様々なパラメータを持たせることができたり、メソッドが定義できたりもするので拡張の幅も広いです。

まとめ

一般に開発をしているとenumを実際に利用している例をみることは少ないかもしれませんが、適切に使えると実はとても便利なenumですのでこれを機にマスターして実際に使ってみてください!

それでは!!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

かい

かい

日向徹かこよすぎか

[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説