kotlin enumを使った安全な実装

ある特定の値しか扱わない場合はEnumクラスを利用しましょう。 特にチーム開発をする場合はEnumを利用することでより安全な実装にすることができます。


Enumの書き方


enum class Sex(val rawValue: String) {
    Male("male"),
    Female("female"),
    TransGender("transGender");
}

例えばユーザーの性別を Enum の Sexクラス として持たせておくことで、 分岐処理の際に安全かつ、可読性の高いコードになります。


when(user.sex) {
    Sex.Male -> {
        // todo
    }
    Sex.Female -> {
        // todo
    }
    Sex.TransGender -> {
        // todo
    }
}

値からEnumの初期化


値から初期化をする場合は以下の様に constructor を用意することで、 わかりやすい初期化が可能になります。


enum class Sex(val rawValue: String) {
    Male("male"),
    Female("female"),
    TransGender("transGender");

    companion object {
        fun init(type: String) : Sex? = when(type) {
            "male" -> ReserveResist
            "female" -> UserCreate
            "transGender" -> TransGender
            else -> null
        }
    }
}

利用する時は以下の様になります。 独自constructorを作らなかった場合の初期化と比べると断然分かりやすいですね。


// 独自constructorで初期化
val sex = SexType.init("male")

// 公式的な初期化
val sex = SexType.values().filter { "male" == it.rawValue }.first()

0 コメント