Подтвердить что ты не робот

Внедрение родового класса с кинжалом

У меня есть абстрактный базовый класс в моем проекте

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

в таком случае?

4b9b3361

Ответ 1

Единственный способ, которым я знаю, - создать новый класс, который расширяет ваш общий. Один для каждого типа, который вас интересует.

public class Foo extends BaseActivity<SomethingExtendingBasePresenter> {
}

@Inject
Foo mFoo;