我见过这个片段:
@Component(modules = {TestActivityModule.class})
public interface TestActivityComponent {
void inject(TestActivity activity);
}
但inject
方法未在用户代码中实现(但在Dagger-2
代码中自动生成)。
inject
是保留名称吗? Dagger-2
如何知道如何实现此方法?
答案 0 :(得分:2)
好的,我明白了:名字没关系,它可以是例如squeeze
,只要提供的类型包含@Inject
个字段/方法/构造函数,Dagger-2
就会生成方法的正文:
@Component(modules = {TypoModule.class})
public interface TypoComponent {
void squeeze(Thingie t);
}
...只要有@Provides
返回@Inject
ed类型:
@Module class TypoModule {
@Provides InjectedType whateverNameYouDecide() {
return new InjectedSubType();
// InjectedSubType extends InjectedType, obviously...
}
}
当然,Thingie
应该有@Inject
ed成员,否则什么都不会发生:
class Thingie {
@Inject InjectedType thingieID;
}
这就是整个故事......