2016-12-14 2 views
4

내가 코 틀린 된 자바 프로젝트로 이동하려면, 흥미로운 발견에,자바 코 틀린 제네릭 번역

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

당신이 조언을 줄 수 고통없이 코 틀린이를 변환 할 수 없습니다, 나는이 어떻게 achive 수 있습니까?

답변

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

덕분에, 지금 작동 –