2010-08-06 2 views
2

다른 필드가 포함 된 여러 개체가 포함 된 특정 개체에 파일을로드하는 클래스가 있습니다. Exmaple :Google Guice 2.0

class RootItem 
{ 
public SubItemType1 sub1; 
} 

class SubItemType1 
{ 
public SubItemType2 sub2; 
public int data1; 
public float data2; 
} 

class SubItemType2 
{ 
public int data3; 
public boolean data4; 
} 

좋아 지금은 내가 특정 값으로 설정 하위 항목을 모두 가진 RootItem을 반환하는 방법을 포함하는 다른 클래스가 있습니다.

다음 Guice를 사용하여 해당 로더를 한 번 호출 한 다음 누군가가 SubItemType1 클래스의 @Inject를 요청할 때마다 RootItem.sub1 개체가 반환되고 누군가가 SubItemType2 클래스를 요청한 다음 RootItem을 요청할 수있게하고 싶습니다. sub1.sub2가 리턴됩니다.

수 있습니까?

감사합니다,

ExtremeCoder 모듈에서

답변

4

:

private RootItem rootItem; /* Initialize this field e.g. in the module's constructor */ 

@Provides 
RootItem provideRootItem() { 
    return rootItem; 
} 

@Provides 
SubItemType1 provideSubItemType1() { 
    return rootItem.sub1; 
} 

@Provides 
SubItemType2 provideSubItemType2() { 
    return rootItem.sub1.sub2; 
} 

이 그럼 당신은 평소와 같이 코드에서 RootItem, SubItemType1 및 SubItemType2를 주입 할 수 있습니다.

+0

(또는 bind (RootItem.class) .toInstance (rootItem) 등을 사용할 수 있습니다. @ Google 개인적으로는 @Provides 메소드가 더 좋음) –