gpt4 book ai didi

java - 在 Mosby 和 Dagger 2 的 Base Presenter 中使用泛型

转载 作者:太空狗 更新时间:2023-10-29 14:52:20 25 4
gpt4 key购买 nike

我正在尝试在 Dagger 2 中使用 Mosby 的 MvpBasePresenter 设置一个 Base Presenter 我有以下基本组件:

public interface BaseViewComponent<V extends BaseView, P extends BasePresenter> {
void injectView(V object);

void injectPresenter(P object);

P getPresenter();
}

使用以下 BasePresenter

public class BasePresenter <V extends BaseView> extends MvpBasePresenter {
@Inject public BasePresenter () {

}
}

和下面的BaseActivity

public abstract class BaseActivity<P extends BasePresenter, C extends BaseViewComponent> extends MvpActivity implements BaseView<P> {

@Inject C mComponent;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (getViewContentId() != 0) {
setContentView(getViewContentId());
ButterKnife.bind(this);
}

}

@Override
public P createPresenter() {
return mComponent.getPresenter();
}
}

出于某种原因,创建演示者显示为返回类型 BasePresenter 而不是类型 P,即使组件 getPresenter 返回 P。有人有任何见解吗?这甚至是一个好主意吗?

最佳答案

我的初步猜测如下,类似于this

public interface BaseViewComponent<V extends BaseView<V, P>, P extends BasePresenter<V, P>> {
void injectView(V object);

void injectPresenter(P object);

P getPresenter();
}

public class BasePresenter<V extends BaseView<V, P>, P extends BasePresenter<V, P>> extends MvpBasePresenter {
@Inject public BasePresenter () {

}
}

public abstract class BaseActivity<V extends BaseView<V, P>, P extends BasePresenter<V, P>, C extends BaseViewComponent<V, P>>
extends MvpActivity
implements BaseView<V, P> {

@Inject C mComponent;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (getViewContentId() != 0) {
setContentView(getViewContentId());
ButterKnife.bind(this);
}

}

@Override
public P createPresenter() {
return mComponent.getPresenter();
}
}

关于java - 在 Mosby 和 Dagger 2 的 Base Presenter 中使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com