Dog ia-a Animal なら List<Dog> is-a List<Animal>だろうか? 代入可能性からのGenrics再入門 by Kazuki MATSUDA, 松田一樹

Kotlin Fest 2025
どちらでも
Kotlin言語・プログラミング 中級者

Dog ia-a Animal なら List<Dog> is-a List<Animal>だろうか? 代入可能性からのGenrics再入門

kazuki_matsuda Kazuki MATSUDA, 松田一樹 kazuki_matsuda

Kotlinでは、ベースとなるJavaで書かれたものを含めて、ライブラリが定義したGeneric Typeを安全にユーザー定義型と組み合わせて使えます。
皆さんも、日常的に List<User>, Map<ProductId, Product> 等の型を使ったコーディングを行っていると思います。

本セッションでは、この Generic Type について、Generics は、型を越えたメソッドの再利用性以外の部分、実際の継承関係にあるクラスと組み合わせたときの代入可能性を見ていきます。
タイトルの例は、まさに Java では×、Kotlin では○という、Kotlin をより安全たらしめる読み取り専用 List の設計の例となっています。
このような活用について概念と実例の両方を理解し、Generics をより安全に利用・作成できるようになることをセッションのゴールとしています。