我正在尝试配置我的 GIN 模块以将 ActivityManager
请求绑定(bind)到 DefaultActivityManagerProvider
:
import com.google.inject.Provider;
public class DefaultActivityManagerProvider implements Provider<ActivityManager> {
@Override
public ActivityManager get() {
return new ActivityManager(new MyDefaultActivityMapper());
}
}
但是当我实际绑定(bind)它时:
public class MyAppGinModule extends AbstractGinModule {
@Override
protected void configure() {
bind(ActivityManager.class).toProvider(DefaultActivityManagerProvider.class);
}
}
我在 bind(...)
语句上遇到编译错误:
Bound mismatch: The generic method toProvider(Class<I>) of type
GinLinkedBindingBuilder<T> is not applicable for the arguments
(Class<DefaultActivityManagerProvider>). The inferred type
DefaultActivityManagerProvider is not a valid substitute for the
bounded parameter <I extends Provider<? extends ActivityManager>>
我在这里做错了什么?!?我遵循了无数的例子,例如 this one并且不明白为什么我会收到错误!提前致谢!
最佳答案
toProvider 未得到正确支持
http://code.google.com/p/google-gin/wiki/GinFaq
http://code.google.com/p/google-gin/wiki/GuiceCompatibility
提供者需要是公共(public)静态的
static class DefaultActivityManagerProvider implements Provider<ActivityManager> {
@Override
public ActivityManager get() {
return new ActivityManager(new MyDefaultActivityMapper());
}
}
关于java - GWT GIN 提供程序编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434690/