イニシャルがリムーブ

楽しいことならいっぱい夢見ることならめいっぱい

KotlinのSealedクラス使いたくて無理をした

Kotlinのsealed classを使いたいと虎視眈々だったんだけど
ついに突っ込んでみた。今回の用途ではそんなにメリットはないけど。
よくある成功or失敗を柔軟にという感じはなくemunの拡張くらいの気持ち。

使ったとこ

Firebase AnalyticsでUser Propertyを設定したかったんだけど、enum

enum class UserProperty(
    val propertyName: String,
    val value: String
) {

  AREA_KYUSYU("area", "九州),
  AREA_SHIKOKU("area", "四国),
    ...
}

とするのは毎回areaって書かなきゃなのがかっこ悪いなと。

おっ、と思ってsealed class使って見ると

sealed class UserProperty(
    val name: String,
    open val value: String
) {

  abstract class Area(override val value: String) : UserProperty("area", value)

  object Kyushu : Area("male")
  object Shikoku : Area("female")
    ...
}

って書けた。コレジャナイ感は否めないけど、こっちのほうが好みなので良しとしよう。

まとめ

もっと活用していこう。あとブログちゃんと書くぞ!(n回目)