Guest User

Untitled

a guest
Jan 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. public interface View {
  2. //...
  3. }
  4.  
  5. public abstract class AbstractPresenter<V extends View> {
  6. @Inject V view;
  7. //...
  8. }
  9.  
  10. public interface LoginView extends View {
  11. //...
  12. }
  13. public LoginPresenter extends AbstractPresenter<LoginView> {
  14. //...
  15. }
  16.  
  17. public class LoginViewImpl implements LoginView {
  18. //...
  19. }
  20.  
  21. @Provides
  22. LoginView provideLoginView() {
  23. return new LoginViewImpl();
  24. }
  25.  
  26. foo.bar.AbstractPresenter$$InjectAdapter.java:[21,31] cannot find symbol
  27. symbol: class V
  28. location: class foo.bar.AbstractPresenter$$InjectAdapter
  29.  
  30. Caused by: java.lang.IllegalArgumentException: V
  31. at dagger.internal.codegen.writer.TypeNames$2.defaultAction(TypeNames.java:39)
  32. at dagger.internal.codegen.writer.TypeNames$2.defaultAction(TypeNames.java:36)
  33. at javax.lang.model.util.SimpleTypeVisitor6.visitTypeVariable(SimpleTypeVisitor6.java:179)
  34. at com.sun.tools.javac.code.Type$TypeVar.accept(Type.java:1052)
  35. at dagger.internal.codegen.writer.TypeNames.forTypeMirror(TypeNames.java:36)
  36. at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:142)
  37. at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:61)
  38. at dagger.internal.codegen.SourceFileGenerator.generate(SourceFileGenerator.java:53)
  39. at dagger.internal.codegen.InjectBindingRegistry.generateSourcesForRequiredBindings(InjectBindingRegistry.java:101)
  40. at dagger.internal.codegen.ComponentProcessor.process(ComponentProcessor.java:149)
  41.  
  42. @Component
  43. public interface PresenterComponent {
  44. <V extends View> void inject(AbstractPresenter<V> presenter);
  45. }
  46.  
  47. @Module
  48. public class LoginModule {
  49. @Provides LoginView provideLoginView() {
  50. return new LoginViewImpl();
  51. }
  52. }
  53.  
  54. @Component(modules = LoginModule.class)
  55. public interface LoginComponent {
  56. void inject(LoginPresenter presenter);
  57. }
  58.  
  59. public LoginPresenter extends AbstractPresenter<LoginView> {
  60. //...
  61. @Inject LoginPresenter(LoginView view) {
  62. super(view);
  63. //...
  64. }
  65. }
  66.  
  67. bind(new LoginPresenter<LoginViewImpl>(){});
Add Comment
Please, Sign In to add comment