如何在GinMapBinder中正确使用TypeLiteral



我试图做的是创建map,其中key将是扩展我的抽象类的类

GinMapBinder<Class<? extends Key>, Value> mapBinder = GinMapBinder
                .newMapBinder(binder(),
                        new TypeLiteral<Class<? extends Key>>() {
                        }, new TypeLiteral<Value>() {
                        });

但是当我尝试填充我的地图时

mapBinder.addBinding(KeyImpl.class).to(Value.class);

我收到错误:

 Error injecting @com.google.gwt.inject.client.multibindings.Internal() java.lang.Class<? extends my.test.gwt.gin.objects.Key>: Unable to create or inherit binding: No implementation bound   for '@com.google.gwt.inject.client.multibindings.Internal() java.lang.Class<? extendsmy.test.gwt.gin.objects.Key>' and an implicit binding cannot be created because the type is annotated.
  Path to required node:
 @com.google.gwt.inject.client.multibindings.Internal com.google.gwt.inject.client.multibindings.MapEntry<java.lang.Class<? extends my.test.gwt.gin.objects.Key>, my.test.gwt.gin.objects.Value> [com.google.gwt.inject.client.multibindings.BindingRecorder.bind(BindingRecorder.java:42)]
  -> com.google.gwt.inject.client.multibindings.MapEntry<java.lang.Class<? extends my.test.gwt.gin.objects.Key>, my.test.gwt.gin.objects.Value> [com.google.gwt.inject.client.multibindings.BindingRecorder.bind(BindingRecorder.java:42)]
  -> @com.google.gwt.inject.client.multibindings.Internal() java.lang.Class<? extends my.test.gwt.gin.objects.Key> [@Inject constructor of com.google.gwt.inject.client.multibindings.MapEntry<java.lang.Class<? extends my.test.gwt.gin.objects.Key>, my.test.gwt.gin.objects.Value>]

如果我不使用TypeLiteral这将起作用,但我不想要原始类型的类。因此,如果有人可以帮助我解决这个问题,我会很高兴。提前致谢

问题已解决

我为每个密钥创建了提供程序

public class KeyImplProvider implements
        Provider<Class<KeyImpl>> {
    @Override
    public Class<KeyImpl> get() {
        return KeyImpl.class;
    }
}

我正在添加元素来映射

mapBinder.addBinding(KeyImplProvider.class).to(Value.class);

相关内容

  • 没有找到相关文章

最新更新