Skip to content

Instantly share code, notes, and snippets.

@daverix
Created May 6, 2015 18:21
Show Gist options
  • Save daverix/aecf8c27d308d529fca3 to your computer and use it in GitHub Desktop.
Save daverix/aecf8c27d308d529fca3 to your computer and use it in GitHub Desktop.
Let Dagger Components extend interfaces to get same methods for all dependencies
package com.example;
import javax.inject.Scope;
import javax.inject.Singleton;
import dagger.Component;
import dagger.Module;
import dagger.Provides;
public class Test {
class Dep {
}
@Scope
@interface BScope {
}
@Scope
@interface CScope {
}
interface Base {
Dep getDep();
}
@Module
class DepModule {
@Provides
public Dep provideDep() {
return new Dep();
}
}
@Singleton
@Component(modules = DepModule.class)
interface A extends Base {
}
@BScope
@Component(dependencies = A.class)
interface B extends Base {
}
@CScope
@Component(dependencies = B.class)
interface C extends Base {
}
void test() {
A a = DaggerTest_A.builder().depModule(new DepModule()).build();
B b = DaggerTest_B.builder().a(a).build();
C c = DaggerTest_C.builder().b(b).build();
Dep myDep = c.getDep();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment