为了介绍Dagger2的使用,我们搭建了一个Demo来逐步分析,大家可以在
这里下载源码(https://github.com/dushaofeng/DaggerDemo.git)。
上一节我们介绍了 《Dagger2教程三之构造方法带参数的情况(原)》这一节我们来讨论如果注入类的构造方法中的参数不同或者注入类包含多个构造方法时的情况处理。
上一节我们介绍了 《Dagger2教程三之构造方法带参数的情况(原)》这一节我们来讨论如果注入类的构造方法中的参数不同或者注入类包含多个构造方法时的情况处理。
一、包含可变参数的构造方法的情况
这里的"可变参数"指的是 注入类构造方法传递的参数可能每个都不同,比如对于BeanNeedParam的注入类的构造方法: public BeanNeedParam(String name) {
this.mName = name;
}
我们希望拿到两个BeanNeedParam对象,其中一个对象的mName="AAA",而另一个对象的mName="BBB",那么我们可以这样实现:
1.1、改造BeanModule
在BeanModule中创建两个方法来分别返回不同的BeanNeedParam对象,并使用@Named注释来区分这两个方法: @Named("TypeA")
@Provides
public BeanNeedParam providerBeanA() {
return new BeanNeedParam("AAA");
}
@Named("TypeB")
@Provides
public BeanNeedParam providerBeanB() {
return new BeanNeedParam("BBB");
}
在这里我们引入了Dagger中的又一个新的注释标记: