1. ホーム
  2. kotlin

[解決済み] Kotlinで非整数のenumを定義するには?

2023-06-05 04:26:02

質問

例えば、値が序数でない列挙型を定義したいのですが、どうすればよいですか?

enum class States(value: Int) {
    STATE_A(4),
    STATE_B(5),
    STATE_C(7),
    STATE_D(12)
}

各項目の値を取得するにはどうしたらよいでしょうか?例えば ステート.STATE_C を返さなければなりません。 7 .

どのように解決するのですか?

を定義する必要があります。 value をプロパティとして定義する必要があります ( val ) として、コンストラクタのパラメータとしてではなく、プロパティとして使用します。その後、アクセス可能になります。

enum class States(val value: Int) {
    STATE_A(1),
    STATE_B(2),
    STATE_C(3),
    STATE_D(4)
}
...
println(States.STATE_C.value) // prints 3

また ordinal を使うことも考えてみてください。

enum class States {
    STATE_A,
    STATE_B,
    STATE_C,
    STATE_D
}
...
println(States.STATE_C.ordinal + 1) // prints 3

このアプローチで行く場合は、注意が必要です。 States の順序を変更すると、コードが壊れる可能性があります。