Вариация Котлина и инъекция кинжала - PullRequest
1 голос
/ 08 ноября 2019

У меня проблемы с получением конверсии Kotlin, чтобы хорошо играть с Dagger.

Мой предыдущий файл в Java компилируется нормально:

@Module
public class InputModule extends AbstractMvpModule<InputView> {
    public InputModule(InputView view) {
        super(view);
    }

    @Provides @ActivityScope
    public InputPresenter provideMvpPresenter(
            MvpPresenterActions mvpPresenterActions,
            ApiManager ApiManager,
            UserState userState,
            ErrorDialogFactory errorDialogFactory,
            AppCache appCache,
            VariantFactory variantFactory,
            InputReducer inputReducer,
            UserState userState) {
        return new InputPresenterImpl(
            mvpPresenterActions,
            ApiManager,
            userState,
            errorDialogFactory,
            appCache,
            variantFactory,
            inputReducer,
            userState);
    }

Но после преобразования в Kotlin:

@Module
class PreferencesModule(preferencesActivity: PreferencesActivity) :
    AbstractMvpModule<PreferencesView>(preferencesActivity) {

    @Provides
    @ActivityScope
    fun provideMvpPresenter(
        mvpPresenterActions: MvpPresenterActions,
        userState: UserState,
        appCache: AppCache<*, *>,
        fcmState: FcmState,
        preferencesReducer: PreferencesReducer,
        stringUtil: StringUtil,
        ccpaPreferenceRowHelper: CcpaPreferenceRowHelper
    ): PreferencesPresenter {
        return PreferencesPresenterImpl(
            mvpPresenterActions,
            userState,
            appCache,
            fcmState,
            preferencesReducer,
            stringUtil,
            ccpaPreferenceRowHelper
        )

я получаю

ошибка: [Dagger / MissingBinding] com.test.android.appcache.AppCache не может быть предоставлен без аннотируемого метода @ Provides. com.test.android.appcache.AppCache внедряется в com.test.android.mvp.ui.activity.pwi.v2.card.CardInputModule.provideMvpPresenter (…, appCache,…) com.test.android.mvp.ui. activity.pwi.v2.card.CardInputPresenter предоставляется по адресу

. Здесь представлен интерфейс AppCache

public interface AppCache<C extends CacheableApiCall, V extends CacheableApiResponse> 
        extends ApiCache<C, V>, LogOutListener {

. Есть ли проблема с способом представления дисперсии в Kotlin дляAppCache?

РЕДАКТИРОВАТЬ: Вот модуль, который обеспечивает AppCache

    @Provides @AppScope
    public static AppCache provideAppCache(
            @Named(Names.SHARED_PREFS_CACHE_TIMES) SharedPreferences cacheTimes,
            @Named(Names.APP_CACHE_DIR_INTERNAL) File appCacheDir,
            CachePolicies cachePolicies,
            AppTimingTracker appTimingTracker,
            Handler handler,
            AppUpgrader appUpgrader) {
        AppCacheImpl appCache = new AppCacheImpl(cacheTimes, appCacheDir, cachePolicies, appTimingTracker, handler);
        appUpgrader.addAppUpgradeListener(appCache);
        return appCache;
    }
...