1
У меня есть базовый абстрактный класс:Дженерики и абстрактный класс в Котлин
abstract class BaseFragment<T : BasePresenter> : Fragment(){
protected var presenter : T? = null
abstract fun providePresenter() : T
abstract fun getLayoutId() : Int
abstract fun onCreate()
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val root = inflater?.inflate(getLayoutId(), container, false)
presenter = providePresenter()
return root
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
onCreate()
}
}
Мой код в Java:
//JAVA
private ArrayList<BaseFragment> fragments;
Как я могу использовать его Котлин? Код не пыльник работает
//Kotlin
val tabs = ArrayList<BaseFragment>() //error: One type argument expected for class BaseFragment<T : BasePresenter> : Fragment
Thx. Он должен работать, но не в моей ситуации. Мне нужно: 'val tabs = ArrayList>() tabs.add (instanceOf ())' Возможно, я что-то не так в своей базовой архитектуре? –
Skullper
В kotlin вы просто используете '()' для создания экземпляров, поэтому 'tabs.add (ProfileFragment())' должен работать – lukle
@PavliukR. Кстати, вы должны указать полный тип 'BaseFragment' в вашем Java-коде. Это типичный тип в примере, который вы дали. Он должен дать вам предупреждение о компиляторе. – marstran