Kotlinであるinterfaceを実装したサブクラスを関数の返り値に設定する方法
意外にネット上に情報がなかった
- Kotlinはfunのあとに型引数をとれるので、そこで以下のようにやるとインターフェースを実装したTを返り値にとれる
fun <T: インターフェース名> hoge(): T {}
- あとは関数内で生成した対象をas Tしてやる
- その際の警告はアノテーション@Suppress("UNCHECKED_CAST")をつけると抑制される
fun <T : BaseInterface> build(): T { @Suppress("UNCHECKED_CAST") return generateA() as T }