как указать общий тип данных, который расширяется от определенного класса

Я новичок в 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>

person Amr    schedule 08.07.2019    source источник


Ответы (1)


Ознакомьтесь с приведенным ниже решением для создания функций с дженериками в Kotlin:

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

}

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

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

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

Подробнее см. здесь.

person Jeel Vankhede    schedule 08.07.2019
comment
пожалуйста, взгляните на раздел обновления, добавленный выше... я изменил код, как вы предложили... однако я получил сообщение об ошибке, указанное в разделе обновления - person Amr; 08.07.2019
comment
Что такое fragmentLeft и fragmentRight в вашем случае? - person Jeel Vankhede; 08.07.2019