使用Dagger图中的限定符获取对象注释

时间:2014-10-05 14:53:15

标签: java android dagger otto

除非图中的单个对象用限定符注释,否则我们可以调用:

graph.get(Bus.class);

如果使用限定符在模块定义中注释此对象,则会抛出IllegalStateException。

是否有更好的方法从图表中检索该对象:

public class BusWrapper {
    @Inject
    @MyQualifier
    Bus bus;
}

graph.inject(new BusWrapper()).bus;

我有一组图表(每个帐户一张图表)。每个帐户图表和一个应用程序范围总线(使用不同的限定符注释)的单独总线。 收到GCM同步请求消息后,我需要从正确的图表中检索总线以传递同步请求。

1 个答案:

答案 0 :(得分:3)

不支持通过.get()执行带注释的实例查找。

我找不到一个好的参考文章来引用。最接近的是this one

  

Dagger 1.0绝对是围绕拥有强大的入口点/可注入对象而设计的,而不是像使用大注释地图那样使用ObjectGraph。

基本上,.get()旨在用于从对象图中抓取根实例,在该实例下,所有依赖关系都将@Inject正常。