eather = leather;
Log.d(Config.TAG,"new Seat(Leather)");
}
}
可以看到,我们在原有的基础之上增加了一个构造器Seat(leather), 而该构造器是存在依赖参数的。而我们需要在@Inject的时候就能自动调用该构造器,怎么办? 在之前讲到的提供依赖Module类修改
@Provides
public Seat provideSeat(Leather leather){
return new Seat(leather);
}
仅仅这样是不行的,因为Module去寻找依赖Leather的时候会找不到对应对象,还需要添加
@Provides
public Leather provideLeather(){
return new Leather();
}
这样在执行provideSeat() 时,能够找到相应的Leather();
那么我们run下,先猜猜在
@Inject
Seat seat;
这个中如何执行的?
07-07 01:00:41.035 8144-8144/com.bae.basicandext D/TAG: new Engine()
07-07 01:00:41.035 8144-8144/com.bae.basicandext D/TAG: new Leather()
07-07 01:00:41.035 8144-8144/com.bae.basicandext D/TAG: new Seat(Leather)
07-07 01:00:41.035 8144-8144/com.bae.basicandext D/TAG: new Wheel()
07-07 01:00:41.035 8144-8144/com.bae.basicandext D/TAG: new Car()
很明了了,它能够自动找到Leather依赖。其实关键的关键还是在Module类中。
讲到这里,相信大家对Dagger2有一个初步认识,并且结合相关Api文档能够达到入门的目的了。接下来会一起学习一些其他Dagger2注解,期待吧…