前言
用过的同学都会知道,Dagger2用于去除依赖,通过注解便可以为我们生成创建对象的代码。通过apt插件在编译阶段生成注入代码,反射只在编译阶段使用,在应用运行阶段没有涉及到注解反射。下面直接进入生成代码的分析,这也是我最近对生成代码学习的记录。
当我们使用Dagger编写好代码后,build一下,只要依赖关系没问题,那么就可以在app/build/generated/source/kapt(用kotlin)目录下的debug中看到生成的代码。
MainPresenter_Factory
这是添加@Inject注解的代码
class MainPresenter @Inject constructor(val mainView: IMainView, val mainModel: IModel)
对应生成的代码为:
public final class MainPresenter_Factory implements Factory<MainPresenter> {
private final Provider<IMainView> mainViewProvider;
private final Provider<IModel> mainModelProvider;
public MainPresenter_Factory(
Provider<IMainView> mainViewProvider, Provider<IModel> mainModelProvider) {
this.mainViewProvider = mainViewProvider;
this.mainModelProvider = mainModelProvider;
}
@Override
public MainPresenter get() {
return new