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(可能应该被命名为)。 –