3

我正在处理具有类型参数的注释。此类型参数用于实例化一个新对象。

使用 Google Guice,我会注入“注入器”本身并使用它来查找正确的实例。但是我对 Dagger 有点陌生,我没有看到网上描述的任何解决方案。我知道 ObjectGraph 可以给我一个实例。我/我可以注入 ObjectGraph 本身吗?我该怎么做?

4

1 回答 1

2

我设法做到了这样。不知道好不好...

酒吧:

public class Bar {

    private ObjectGraph objectGraph;

    @Inject
    Bar(ObjectGraph objectGraph){

        this.objectGraph = objectGraph;
    }

    public ObjectGraph getObjectGraph() {
        return objectGraph;
    }
}

条形模块:

@Module(
        injects = Bar.class,
        complete = false
)
public class BarModule {
}

食品模块:

@Module(
        includes = BarModule.class,
        injects = ObjectGraph.class,
        complete = true,
        library = true
)
public class FooModule {

    private ObjectGraph objectGraph;

    public void setObjectGraph(ObjectGraph objectGraph){

        this.objectGraph = objectGraph;
    }

    @Provides @Singleton ObjectGraph providesObjectGraph(){
        return null;
    }
}

入口点:

public class EntryPoint {

    public static void main(String[] args){
        FooModule fooModule = new FooModule();
        ObjectGraph objectGraph = ObjectGraph.create(new BarModule(), fooModule);
        fooModule.setObjectGraph(objectGraph);

        System.out.println(objectGraph);

        Bar bar = objectGraph.get(Bar.class);
        ObjectGraph objectGraph1 = bar.getObjectGraph();

        System.out.println(objectGraph);
    }
}
于 2014-02-19T21:06:41.253 回答