ELIJunior: Dagger in Android

Well it does map multibinding for the class of the activities. So I guess it could be reflection, but it's all done in compile time.

Still looks like a goddamn hack, tho.

  private final Map<Class<? extends T>, Provider<AndroidInjector.Factory<? extends T>>>
      injectorFactories;

  @Inject
  DispatchingAndroidInjector(Map<Class<? extends T>, 
        Provider<AndroidInjector.Factory<? extends T>>> injectorFactories) {
    this.injectorFactories = injectorFactories;
  }
  public boolean maybeInject(T instance) {
    Provider<AndroidInjector.Factory<? extends T>> factoryProvider =
        injectorFactories.get(instance.getClass());
    if (factoryProvider == null) {
      return false;
    }

    AndroidInjector.Factory<T> factory = (AndroidInjector.Factory<T>) factoryProvider.get();
    try {
      AndroidInjector<T> injector =
          checkNotNull(factory.create(instance), "%s.create(I) should not return null.", factory.getClass().getCanonicalName());

      injector.inject(instance);
      return true;
  ....
/r/androiddev Thread Parent