Я пытаюсь настроить свой модуль GIN для привязки ActivityManager
запросов к DefaultActivityManagerProvider
:
import com.google.inject.Provider;
public class DefaultActivityManagerProvider implements Provider<ActivityManager> {
@Override
public ActivityManager get() {
return new ActivityManager(new MyDefaultActivityMapper());
}
}
Но когда я иду, чтобы на самом деле связать его:
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>>
Что я здесь делаю неправильно?!? Я следовал бесчисленным примерам, таким как это one и не могу понять, почему я получаю сообщение об ошибке! Заранее спасибо!
Provider
, который я использую, этоcom.google.inject.Provider
. Я выполнил поиск по типам для всего, что называется Provider в моем пути к классам, и увидел, что внутриjavax.inject.jar
естьjavax.inject.Provider
. Я использую неправильныйProvider
? - person   schedule 18.11.2012com.a.ActivityManager
, но просите ввестиorg.b.ActivityManager
- поскольку они не совпадают, Guice (на самом деле, Java) думает, что вы говорите с ума. Поскольку единственноеimport
, которое вы указали, предназначено дляProvider
, мы не можем сказать, правильно ли это было сделано. - person Colin Alworth   schedule 19.11.2012