gpt4 book ai didi

java - 如何从仅在运行时已知的类型中获取 Dagger 实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:41 25 4
gpt4 key购买 nike

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

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

最佳答案

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

酒吧:

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 {
}

FooModule:

@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);
}
}

关于java - 如何从仅在运行时已知的类型中获取 Dagger 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com