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.

Reply via email to