Generic @ Inject'd поля в абстрактном суперклассе

Рассмотрим множество типов MVP. Существует абстрактный Presenter с интерфейсом View:

public interface View {
    //...
}

public abstract class AbstractPresenter<V extends View> {
    @Inject V view;
    //...
}

Затем давайте определим конкретный подкласс презентатора с его интерфейсом представления и реализацией:

public interface LoginView extends View {
    //...
}
public LoginPresenter extends AbstractPresenter<LoginView> {
    //...
}

public class LoginViewImpl implements LoginView {
    //...
}

В модуле Dagger, конечно, мы бы определили@Provides метод:

@Provides
LoginView provideLoginView() {
    return new LoginViewImpl();
}

В Guice вы могли бы написать это так же, или простоbind(LoginView.class).to(LoginViewImpl.class).

Однако в Dagger (как v1, так и 2.0-SNAPSHOT от Google) это приводит к ошибке, так как не может понять, чтоV это при создании обязательной проводки дляAbstractPresenter<V>, С другой стороны, Guice выясняет, что это потому, что он на самом деле создаетLoginPresenterтак что это требует реализацииLoginView.

Кинжал 1.2.2:

foo.bar.AbstractPresenter$InjectAdapter.java:[21,31] cannot find symbol
  symbol:   class V
  location: class foo.bar.AbstractPresenter$InjectAdapter

Кинжал 2.0-SNAPSHOT:

Caused by: java.lang.IllegalArgumentException: V
    at dagger.internal.codegen.writer.TypeNames$2.defaultAction(TypeNames.java:39)
    at dagger.internal.codegen.writer.TypeNames$2.defaultAction(TypeNames.java:36)
    at javax.lang.model.util.SimpleTypeVisitor6.visitTypeVariable(SimpleTypeVisitor6.java:179)
    at com.sun.tools.javac.code.Type$TypeVar.accept(Type.java:1052)
    at dagger.internal.codegen.writer.TypeNames.forTypeMirror(TypeNames.java:36)
    at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:142)
    at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:61)
    at dagger.internal.codegen.SourceFileGenerator.generate(SourceFileGenerator.java:53)
    at dagger.internal.codegen.InjectBindingRegistry.generateSourcesForRequiredBindings(InjectBindingRegistry.java:101)
    at dagger.internal.codegen.ComponentProcessor.process(ComponentProcessor.java:149)

Мой вопрос: это ошибка? Это недостающая функция? Или это проблема производительности, от которой нас защищает Dagger (как SerializableTypeOracleBuilder в GWT RPC)?

Обратите внимание, что эта же проблема возникает, когдаV упоминается какProvider<V>, Lazy<V>, так далее.

Ответы на вопрос(2)

Ваш ответ на вопрос