2

ActivityManagerリクエストをにバインドするようにGINモジュールを構成しようとしています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>>

私はここで何が間違っているのですか?!?私はこのような無数の例をたどってきましたが、なぜエラーが発生するのか理解できません!前もって感謝します!

4

1 に答える 1

3

toProvider が適切にサポートされていない

http://code.google.com/p/google-gin/wiki/GinFaq

http://code.google.com/p/google-gin/wiki/GuiceCompatibility

プロバイダーは public static である必要があります

static class DefaultActivityManagerProvider implements Provider<ActivityManager> {
    @Override
    public ActivityManager get() {
        return new ActivityManager(new MyDefaultActivityMapper());
    }
}
于 2012-11-28T21:44:10.107 に答える