我看过这个片段:
@Component(modules = {TestActivityModule.class})
public interface TestActivityComponent {
void inject(TestActivity activity);
}
但是 inject
方法并未在用户代码中实现(而是在 Dagger-2
代码中自动生成)。
那么inject
是一个保留名称吗? Dagger-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;
}
这就是整个故事......
关于java - 注入(inject)方法是保留名称吗? Dagger-2 如何知道实现它的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157771/