Generics Kotlin,使用扩展泛型的类类型定义对象
我已经实现了MVP,我试图在Kotlin中进行转换,但我一直使用泛型——我未能实例化扩展父presenter类的未知类型的对象。我为演示者提供了界面:Generics Kotlin,使用扩展泛型的类类型定义对象,generics,kotlin,Generics,Kotlin,我已经实现了MVP,我试图在Kotlin中进行转换,但我一直使用泛型——我未能实例化扩展父presenter类的未知类型的对象。我为演示者提供了界面: interface BasePresenter { fun attachView(view: View) fun detachView(view: View) ...} 还有一些片段的基本代码,这些代码将包含presenter。在java中,它的工作方式如下: abstract public class BaseFragment
interface BasePresenter {
fun attachView(view: View)
fun detachView(view: View)
...}
还有一些片段的基本代码,这些代码将包含presenter。在java中,它的工作方式如下:
abstract public class BaseFragmentWithPresenter<P extends BasePresenter> extends BaseFragment {
@Inject
protected P presenter;
如何在科特林做到这一点?我阅读了有关输入输出技术的内容,但仍然失败。尝试以下方法:
abstract class BaseFragmentWithPresenter<P : BasePresenter> : BaseFragment() {
protected abstract val presenter: P
}
抽象类BaseFragmentWithPresenter:BaseFragment(){
受保护的抽象val呈现者:P
}
试试这个:
abstract class BaseFragmentWithPresenter<P : BasePresenter> : BaseFragment() {
protected abstract val presenter: P
}
抽象类BaseFragmentWithPresenter:BaseFragment(){
受保护的抽象val呈现者:P
}
我发现Kotlin使用泛型要比使用Java多得多。
我遇到了这个解决方案:
abstract class BaseFragmentWithPresenter<V : BaseView, P : BasePresenter<V>> : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
presenter.attachView(this as V)
}
抽象类BaseFragmentWithPresenter:BaseFragment(){
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
presenter.attachView(此为V)
}
我发现Kotlin使用泛型要比使用Java多得多。
我遇到了这个解决方案:
abstract class BaseFragmentWithPresenter<V : BaseView, P : BasePresenter<V>> : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
presenter.attachView(this as V)
}
抽象类BaseFragmentWithPresenter:BaseFragment(){
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
presenter.attachView(此为V)
}
您能否澄清问题具体出在哪里?代码应该是这样的:抽象类BaseFragmentWithPresenter:BaseFragment(){lateinit var p:p}
您能否澄清问题具体出在哪里?代码应该是这样的:抽象类BaseFragmentWithPresenter:BaseFragment(){lateinit var p:p}