注入方法是保留名称吗? Dagger-2如何知道如何实现它的身体?

时间:2016-05-11 09:02:09

标签: java dagger-2

我见过这个片段:

@Component(modules = {TestActivityModule.class})
public interface TestActivityComponent {
    void inject(TestActivity activity);
}

inject方法未在用户代码中实现(但在Dagger-2代码中自动生成)。

inject是保留名称吗? Dagger-2如何知道如何实现此方法?

1 个答案:

答案 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;
}

这就是整个故事......