Square的AssitedInject库实际上是一个生成Dagger 2模块的注释处理器。Dagger 2 也是一个注释处理器。
而且据我所知,没有办法控制处理器执行的顺序。
在此示例中(请参见下面的代码段),您可以看到模块依赖于由 AssistedInject 生成的类AssistedInject_MainModule
。因此,如果 Dagger 2 将首先运行,则构建应该会失败,因为此时AssistedInject_MainModule
不存在。
但是可以编译。它是如何工作的?
@AssistedModule
@Module(includes = AssistedInject_MainModule.class)
public abstract class MainModule {
@Provides static @Exclamation String provideExclamation() {
return "!";
}
}