0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sealed classってめちゃくちゃ便利じゃない?

Posted at

初めに

今回は、sealed classについて書いていきます。

sealed class

簡単にいうと全然違うdataの型でもひとまとまりで持っておけるクラスです。
例えばですが、一つのRecyclerViewで二種類のデータの型を表示したい時などに非常に役立つ機能です。
書き方は、以下の通りです。

sealed class Example {

    data class hoge(
        val sample: Sample
    ) : Example()

    data class huga(
        val something: Something
    ) : Example()
}

SampleSomethingが全く別の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通信でよく使ってましたが、それ以外でもいろんな場面で活躍してくれると思うので、是非皆さんも触ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?