Ответ 1
Единственный способ, которым я знаю, - создать новый класс, который расширяет ваш общий. Один для каждого типа, который вас интересует.
public class Foo extends BaseActivity<SomethingExtendingBasePresenter> {
}
@Inject
Foo mFoo;
У меня есть абстрактный базовый класс в моем проекте
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
в таком случае?
Единственный способ, которым я знаю, - создать новый класс, который расширяет ваш общий. Один для каждого типа, который вас интересует.
public class Foo extends BaseActivity<SomethingExtendingBasePresenter> {
}
@Inject
Foo mFoo;