2011-10-18 527 views
0

我是Guice的新手,在谷歌上搜索這個問題,但找不到滿意的答案。Guice:注入參數化構造函數

public class X { 
    private Y y; 

    public X() { 
     y = new Y("abc", "xyz"); 
    } 
} 

public class Y { 
    private String str1; 
    private String str2; 

    public Y(String str1, String str2) { 
     this.str1 = str1; 
     this.str2 = str2; 
    } 
} 

現在,我想注入Y考慮類X的構造

我確實發現AssistedInject,但不是它的構造函數具有其中的一些 由吉斯,其中一些提供的參數由呼叫者提供。

這裏,在這種情況下,構造函數的所有參數僅由調用者提供。

我該怎麼做?

回答

1

我發現AssistedInject,但不是它的構造函數有 參數其中一些是由吉斯提供,其中一些被調用者提供 。

正確。

這裏,在這種情況下,構造函數的所有參數僅由調用者提供 。

我該怎麼做?

只要按照您的方式進行:使用new Y(...),X構造函數。

爲什麼你想在這種情況下使用Guice?

2

您可以使用綁定註釋(或內置@Named)爲此,請參閱第一次的Q的Guice FAQ

這給你一個辦法區分開2種相同類型。例如

// in the module 
bind(String.class).annotatedWith(Names.named("logical.env.id")).toInstance(System.getProperty("logical.env.id", "UK")); 

// in the class 
@Inject 
public Foo(Bar barInstance, @Named("logical.env.id") String logicalEnvId) { 
} 
相關問題