用Dagger注入泛型类

时间:2013-10-16 17:23:06

标签: android dependency-injection dagger

我的项目中有一个抽象基类

public abstract class BaseActivity<T extends BasePresenter<? extends IBaseView>> implements IBaseView{

我尝试注入这样的泛型类:

@Inject protected T mPresenter; 

有没有办法让匕首与这种通用注射一起工作? Dagger生成如下代码:

public final class BaseActivity$$InjectAdapter extends Binding<BaseActivity>
implements MembersInjector<BaseActivity> {
    private Binding<T> mPresenter;
}

然后失败,因为“T无法解析为某种类型”。有没有办法让它生成

Binding<SomethingExtendingBasePresenter> mPresenter

在这种情况下?

1 个答案:

答案 0 :(得分:0)

我知道的唯一方法是创建一个扩展泛型的新类。您感兴趣的每种类型一个。

public class Foo extends BaseActivity<SomethingExtendingBasePresenter> {
}

@Inject
Foo mFoo;