前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

サブクラスをパラメータとして渡す

課題

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 {
                 //
        }