3
我正在處理具有類型參數的註釋。這個類型參數用於實例化一個新對象。如何從僅在運行時已知的類型獲取匕首實例
有了Google Guice,我會注入'注射器'本身並使用它來找到正確的實例。 但是我對Dagger有點新,我沒有看到任何網絡上描述的解決方案。我知道ObjectGraph可以給我一個實例。我可以/我是否允許注入ObjectGraph本身?我會怎麼做?
我正在處理具有類型參數的註釋。這個類型參數用於實例化一個新對象。如何從僅在運行時已知的類型獲取匕首實例
有了Google Guice,我會注入'注射器'本身並使用它來找到正確的實例。 但是我對Dagger有點新,我沒有看到任何網絡上描述的解決方案。我知道ObjectGraph可以給我一個實例。我可以/我是否允許注入ObjectGraph本身?我會怎麼做?
我設法做到這一點。不知道這是好...
酒吧:
public class Bar {
private ObjectGraph objectGraph;
@Inject
Bar(ObjectGraph objectGraph){
this.objectGraph = objectGraph;
}
public ObjectGraph getObjectGraph() {
return objectGraph;
}
}
BarModule:
@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);
}
}