課題
Android StudioからJavaコードをKotlinに変換したところ、親クラスを引数に持つよう定義されたメソッドにその子クラスをパラメータで渡している箇所がコンパイルエラーになった。どうすればよいか。
エラーとなった呼出し元
val fragment = PeopleFragment.newInstance(people))
関数側
@JvmStatic fun newInstance(people: Array<Parcelable>): PeopleFragment { // }
対応
関数定義側で型パラメータを定義する必要がある。その際、上限境界(under bound)を設け、そのサブタイプを許可する。
@JvmStatic fun <T : Parcelable> newInstance(people: Array<T>): PeopleFragment { // }