初めに
今回は、sealed classについて書いていきます。
sealed class
簡単にいうと全然違うdata
の型でもひとまとまりで持っておけるクラスです。
例えばですが、一つのRecyclerView
で二種類のデータの型を表示したい時などに非常に役立つ機能です。
書き方は、以下の通りです。
sealed class Example {
data class hoge(
val sample: Sample
) : Example()
data class huga(
val something: Something
) : Example()
}
Sample
とSomething
が全く別のDataClass
でもひとまとまりに管理をすることができるのでRecyclerView
に対してExample
クラスを渡すようにすればあとは中身を見て判断するように実装すればいいだけです。
もし、片方は何もデータを保持したくないのであればobject
で宣言をすれば問題ありません。
また、Data構造自体は全く同じだけどView
に反映する時に区別をしたい時などがあると思います。
そんな時は下記の書き方をすることで簡単に区別することができるので非常に便利です。
sealed class Example {
abstract val sample: Sample
abstract val something: Something
data class hoge (
override val sample: Sample,
override val something: Somthing
) : Example()
data class huga (
override val sample: Sample,
override val something: Somthing
) : Example()
}
最後に
今回は最近改めて使いやすさと便利さを痛感したsealed class
を紹介させていただきました。
自分はAPI通信でよく使ってましたが、それ以外でもいろんな場面で活躍してくれると思うので、是非皆さんも触ってみてください。