2014-02-17 2 views
3

유형 매개 변수가있는 주석을 처리 중입니다. 이 유형 매개 변수는 새 객체를 인스턴스화하는 데 사용됩니다.런타임에만 알려진 유형의 단검 인스턴스를 얻는 방법

Google Guice를 사용하면 '인젝터'자체에 주사하여 정확한 인스턴스를 찾을 수 있습니다. 그러나 나는 단검에 조금 익숙하지 만 그물에 설명 된 해결책은 보이지 않습니다. 나는 ObjectGraph가 나에게 인스턴스를 줄 수 있음을 안다. ObjectGraph 자체를 삽입 할 수 있습니까? 내가 어떻게 그럴 수 있니?

답변

2

나는 이렇게 할 수 있었다. 확실하지가 ...

바 좋은 경우 :

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

의 EntryPoint :

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