2016-12-14 91 views
4

我想移動到科特林老Java項目,發現有趣的,不能無痛苦Java來科特林泛型翻譯

public interface BaseJView<P extends BaseJPresenter> { 
    P createPresenter(); 
} 
public interface BaseJPresenter<V extends BaseJView> { 
    void bindView(V view); 
} 

你能給這個建議轉化爲科特林,我怎麼能實現這一目標?

回答

4

一種方法是採用recursive type definition像這樣:

interface BaseJView<TSelf : BaseJView<TSelf, P>, P : BaseJPresenter<P, TSelf>> { 
    fun createPresenter(): P 
} 

interface BaseJPresenter<TSelf : BaseJPresenter<TSelf, V>, V : BaseJView<V, TSelf>> { 
    fun bindView(view: V) 
} 

然後你可以有:

class Presenter : BaseJPresenter<Presenter, View> { 
    override fun bindView(view: View) { ... } 
} 
class View : BaseJView<View, Presenter> { 
    override fun createPresenter(): Presenter { ... } 
} 
+0

感謝,現在的工作 –