2013-10-16 63 views
11

我有一個抽象基類,在我的項目注射泛型類與匕首

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

進我嘗試注入泛型類是這樣的:

@Inject protected T mPresenter; 

有沒有什麼辦法讓匕首與這樣的通用注入工作?匕首產生類似的代碼:

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

然後失敗,因爲「T不能被解析爲一個類型」。有什麼辦法讓它產生一個

Binding<SomethingExtendingBasePresenter> mPresenter 

在這種情況下?

+0

您的類型很奇怪。爲什麼「Activity」擴展了View的接口? –

+0

活動正在實現一個BaseView界面,它是從模型 - 視圖 - 演示者模式查看,而不是視圖,如android.view.View – Malthan

+0

在這種情況下,由於您的活動是演示者,因此它可能不應該也是一個視圖。 –

回答

0

我知道的唯一方法是創建一個擴展泛型的新類。一種用於您感興趣的每種類型。

public class Foo extends BaseActivity<SomethingExtendingBasePresenter> { 
} 

@Inject 
Foo mFoo;