java - 注入(inject)方法是保留名称吗? Dagger-2 如何知道实现它的主体?

标签 java dagger-2

我看过这个片段:

@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 返回 @Injected 类型:

@Module class TypoModule {
    @Provides InjectedType whateverNameYouDecide() {
        return new InjectedSubType();
        // InjectedSubType extends InjectedType, obviously...
    }
}

当然,Thingie 应该有 @Injected 成员,否则什么也不会发生:

class Thingie {
    @Inject InjectedType thingieID;
}

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

关于java - 注入(inject)方法是保留名称吗? Dagger-2 如何知道实现它的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157771/

相关文章:

java - 没有 XML 声明的 XStream(new StaxDriver())

java - jframe 不会以恒定速率重绘

java - 是否可以从纯 Java 访问 BDB?

android - 为什么Hilt和Dagger需要注入(inject)Activity和Fragment?

android - DaggerIssueRegistry 未指定供应商

java.nio transferTo 似乎快得不可思议?

java - 尝试分析应用程序时重新定义失败,出现错误 62

android library release 启动时崩溃

java - 在 Retrofit 上观察 Observable 时发生 OnError

kotlin - 带有 Kotlin 类委托(delegate)的 Dagger 构造函数注入(inject)