Как указать универсальный тип данных, который выходит из определенного класса - PullRequest
0 голосов
/ 08 июля 2019

Я новый kotlin, и я хотел бы знать, как предоставить общий тип данных для метода в качестве параметра. в Яве

methods(<? extends Class1>)

Пожалуйста, ознакомьтесь с кодом, размещенным ниже, и дайте мне знать, как его изменить, чтобы разместить предоставленный комментарий.

обновление

   var fragTransactionInstance = getFragmentManagerInstance()?.let {
        it.getFragmentTransactionInstance()
            ?.replaceTransaction(R.id.fragLeft, fragmentLeft)//RequiredTypeVariable (T)Found: FragmentLeft
            ?.replaceTransaction(R.id.fragRight, fragmentRight)
    }?.also {
        it.commit()
    }

код

 fun FragmentTransaction.replaceTransaction(layout: Int, fragment : Fragment): FragmentTransaction {
    return this.replace(layout, fragment)
}
//the second parameter must be any parameter that extends Fragment. e.g: <? extends Fragment>

1 Ответ

2 голосов
/ 08 июля 2019

Проверьте решение ниже, чтобы создать функции с обобщениями в Kotlin:

fun <T : SomeClass> someFun(t: T) {

}

В вашем случае это будет выглядеть так:

fun <T : Fragment> FragmentTransaction.replaceTransaction(layout: Int, t: T): FragmentTransaction {
    return this.replace(layout, t)
}

Здесь t должно быть типа Fragment.

См. здесь для получения дополнительной информации.

...