Enumの定義
名前付き定数の集合を作成します
「Enumの定義」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
enumとは
enum classは、名前付き定数の固定された集合を定義します。値が、少数の既知の選択肢のいずれかにしかなれない場合に使用します。
- 各定数はenum型のインスタンスです。
- それ以外の値が存在しないことをコンパイラが保証します。
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
fun main() {
val d = Direction.NORTH
println(d)
}文字列だけではいけない理由
文字列では、タイプミスや無効な値が入り込む可能性があります。enumを使うと、無効な状態を不可能にできます。宣言された集合に含まれない値は、コンパイラによって拒否されます。
enum class Status { ACTIVE, INACTIVE }
fun main() {
val s: Status = Status.ACTIVE
println("Current: $s")
}定数の宣言
定数は中括弧の間にカンマで区切って記述します。慣例として、UPPER_SNAKE_CASEで記述します。
enum class Size {
SMALL, MEDIUM, LARGE, EXTRA_LARGE
}
fun main() {
println(Size.EXTRA_LARGE)
}各定数はオブジェクト
すべてのenum定数は、enum型のシングルトンインスタンスです。常にColor.REDのように、enum名を通して参照します。
enum class Color { RED, GREEN, BLUE }
fun main() {
val c = Color.GREEN
println(c == Color.GREEN)
}enum値の比較
enum定数は==で比較できます。それぞれがシングルトンであるため、等価性と参照同一性が一致します。
enum class Light { RED, YELLOW, GREEN }
fun main() {
val signal = Light.RED
if (signal == Light.RED) println("Stop")
}nameプロパティの読み取り
すべての定数には組み込みのnameプロパティがあり、宣言時に指定した文字列を正確に取得できます。
enum class Planet { MERCURY, VENUS, EARTH }
fun main() {
val p = Planet.EARTH
println(p.name)
}文字列からvalueOfを取得する
自動生成されるvalueOf()関数は、一致する文字列をenum定数に変換します。一致しない文字列を渡すと例外がスローされます。
enum class Day { MON, TUE, WED }
fun main() {
val d = Day.valueOf("TUE")
println(d)
}パラメータとしてenumを使う
enumは関数のパラメータに適しています。呼び出し側は、有効な定数のいずれかだけを渡せるためです。
enum class Level { LOW, HIGH }
fun setVolume(level: Level) {
println("Volume set to $level")
}
fun main() {
setVolume(Level.HIGH)
}enumによる可読性の向上
Direction.NORTHと書かれたコードは、それ自体が説明になっています。0や1のようなマジックナンバーと比べて、意図が明確です。
enum class Gear { PARK, DRIVE, REVERSE }
fun main() {
val current = Gear.DRIVE
println("Gear is $current")
}実践的な例
トランプのスートのような小さな集合をモデル化するには、enumが最適です。
enum class Suit { HEARTS, DIAMONDS, CLUBS, SPADES }
fun main() {
for (suit in Suit.values()) {
println(suit)
}
}定数が1つだけのenum
定数が1つだけでも有効です。保証された単一の値(簡易的なシングルトン)をモデル化するために使われることがあります。
enum class AppMode { PRODUCTION }
fun main() {
println(AppMode.PRODUCTION)
}理解度チェック
enumの定義について理解できているか確認しましょう。
まとめ
enumを定義する方法を学びました。
enum classは、名前付き定数の固定された集合を宣言します。- 各定数はシングルトンインスタンスで、enum名を通してアクセスします。
nameとvalueOf()は、定数と文字列を相互に変換します。- enumはコンパイル時に無効な値を防ぎます。
enum class Direction { NORTH, SOUTH, EAST, WEST }
fun main() {
println(Direction.valueOf("EAST").name)
}よくある質問
「Enumの定義」レッスンは無料ですか?
はい。「Enumの定義」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「Enumの定義」で何を学びますか?
名前付き定数の集合を作成します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Enumの定義」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。