假设我有这样的活动:
public class ListBlogsActivity extends Activity {
@Inject ObjectMapper mapper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Put Dagger into action
ObjectGraph.create(new ListBlogsModule()).inject(this); //Dagger
//do a bunch of other things etc...
}
现在让我说我有一个dagger模块,我定义它将ObjectMapper注入活动,如下所示:
@Module(injects = ListBlogsActivity.class)
public class ListBlogsModule {
@Provides ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
//do some more stuff ..blah blah
return mapper;
}
}
现在这是我的关键问题:
假设我有另一个模块,我们定义它将一个ObjectMapper注入到同一个活动中:
@Module(injects = ListBlogsActivity.class)
public class ListBlogs2Module {
@Provides ObjectMapper objectMapper2() {
ObjectMapper mapper = new ObjectMapper();
//do some more stuff ..blah blah
return mapper;
}
}
会发生什么,匕首将如何区分这个因为我有两个模块提供了一个注入sdame类型的ObjectMapper - 哪一个被选中?
答案 0 :(得分:0)
它不会编译。
如果在不同的模块中有两个相同类型的依赖项,则必须将一个标记为覆盖它。在模块注释的下面设置。
overrides = true