Briefly glancing over it, you probably want to use .implement with TypeLiterals, not classes.
sam On Wed, Jul 6, 2011 at 9:51 PM, Alex Luya <[email protected]> wrote: > Actually,I am using gin for GWT.Following are my code: > > --------------------------------------------------------------------------------------------- > interface A<M extends Model> > { > //interface A > } > > ------------------------------------------------------------------------------------------------- > class B<M extends Model> implements A<M> > { > // implementation of A > } > > ------------------------------------------------------------------------------------------------- > class MExt extend Model > { > //this is inheritance of Model > } > > ------------------------------------------------------------------------------------------------- > interface Factory<M extends Model,V extends A<M>> > { > V createA(M model); > } > > ------------------------------------------------------------------------------------------------- > public class ClientModule extends AbstractGinModule > { > @Override > protected void configure() > { > bind(new TypeLiteral<A<MExt >>(){}).to(new TypeLiteral<B<MExt>>(){}); > install(new GinFactoryModuleBuilder().implement(A.class, > B.class).build(Factory.class)); > } > } > > ------------------------------------------------------------------------------------------------- > When trying to run,get these errors: > > ----------------------------------------------------------------------------------------------------- > ...... > > 1)V cannot be used as a key; It is not fully specified. > ...... > > ----------------------------------------------------------------------------------------------------- > > So I tried to do this:add > > ----------------------------------------------------------------------------------------------------- > interface FactoryExt extend Factory<MExt,A<MExt>>{ > .................................................... > } > > ----------------------------------------------------------------------------------------------------- > and reconfigure module to > > ----------------------------------------------------------------------------------------------------- > public class ClientModule extends AbstractGinModule > { > @Override > protected void configure() > { > bind(new TypeLiteral<A<MExt >>(){}).to(new TypeLiteral<B<MExt>>(){}); > install(new GinFactoryModuleBuilder().implement(A.class, > B.class).build(FactoryExt.class)); > } > } > > ----------------------------------------------------------------------------------------------------- > get this error: > > ----------------------------------------------------------------------------------------------------- > ...... > 1) Could not find a suitable constructor in com.domain.client.ui.A. Classes > must have either one (and only one) constructor annotated with @Inject or a > zero-argument constructor that is not private. > ...... > > ----------------------------------------------------------------------------------------------------- > it seems that guice didn't recognize this clause: > ------------------------------------------------- > bind(new TypeLiteral<A<MExt >>(){}).to(new TypeLiteral<B<MExt>>(){}); > ---------------------------------------------------- > > So,how can I solve this problem? > > -- > You received this message because you are subscribed to the Google Groups > "google-guice" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-guice?hl=en. > -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
