本文主要将讲解@Inject 和 @Component、@Module 三个标签。
主要是就是讲解文章核心部分,
@Module
首先我们来讲解一下Module 这个注解。它的意义:提供一个外来Module模块。可以插入在各种Component中. 所以它是一个可组装的类.
他本身的自己的能力常用:他可在自身之中什么@Provides注解类;
每当它在自己类中申明一个@Provides 方法。 则会使用apt基于@Provides 来创建对应的lClass,如:
// 填充在有@Module的Class类中
@Provider
public String providesHelloStr() {
return "hello"
}
基于上在@Module标注的类的实现。(@Provides)我们将会在编译器使用APT生成一个对应的类:
@ScopeMetadata
@QualifierMetadata
@DaggerGenerated
@SuppressWarnings({
"unchecked",
"rawtypes"
})
public final class AppModule_ProvideHelloStringFactory implements Factory<String> {
private final AppModule module;
public AppModule_ProvideHelloStringFactory(AppModule module) {
this.module = module;
}
@Override
public String get() {
return provideHelloString(module);
}
public static AppModule_ProvideHelloStringFactory create(AppModule module) {
return new AppModule_ProvideHelloStringFactory(module);
}
public static String provideHelloString(AppModule instance) {
return Preconditions.checkNotNullFromProvides(instance.provideHelloString());
}
}