1
例如,我有GIN模塊,其包括用於類A儘管在B類(B不結合使用GIN)的結合,我能簡單地使用:我可以使用GIN在GWT中的常規類中注入對象嗎?
@Inject private A a;
注入類A?我在我的項目中嘗試過,看起來像我得到了對象a的空指針。不知道爲什麼。
例如,我有GIN模塊,其包括用於類A儘管在B類(B不結合使用GIN)的結合,我能簡單地使用:我可以使用GIN在GWT中的常規類中注入對象嗎?
@Inject private A a;
注入類A?我在我的項目中嘗試過,看起來像我得到了對象a的空指針。不知道爲什麼。
因爲你需要用GIN實例化你的B類。
例如你可以使用(提供真實的),然後注入其在構造函數中,這樣@UiFields:
/*Class B is not binded by GIN*/
public class B {
@Inject
C cInstance; //C is binded by GIN
}
/*Class A is binded with GIN*/
public class A extends ViewImpl{
@UiField(provided=true)
B myWidget;
//and then
@Inject
public A (UiBinder binder, B myWidget){
this.myWidget = myWidget; //cInstance inside of it is injected!
}
}
這種B的注射後,所有的B內的@Inject註解應按預期解決。
而如果你實例化一個與GWT.create/new關鍵字 - 對於B例如進myWidget參考值將是空也
或者,您可以Ginjector有需要B作爲唯一的參數無效的方法,並且將注入其成員。這表現得像Guice的Injector.injectMembers(可能應該被命名爲)。 –