2016-01-13 75 views

回答

2

因为你需要用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参考值将是空也

+1

或者,您可以Ginjector有需要B作为唯一的参数无效的方法,并且将注入其成员。这表现得像Guice的Injector.injectMembers(可能应该被命名为)。 –

相关问题