Я пытаюсь добавить ViewModelProvider.Factory, и у меня возникают проблемы с пониманием, почему я не могу использовать аннотацию @Binds.
Эта аннотация работает:
@Binds
abstract ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory viewModelFactory);
В сочетании со следующей аннотацией проект компилируется:
@Provides
@IntoMap
@ViewModelKey(MyViewModel.class)
static ViewModel MyViewModel(){
return new MyViewModel();
}
Однако, если приведенный выше код заменяется следующим:
@Binds
@IntoMap
@ViewModelKey(MyViewModel.class)
abstract ViewModel bindMyViewModel(MyViewModel viewModel);
Внезапно я получаюследующее сообщение об ошибке:
... MyViewModel не может быть предоставлен без конструктора @Inject или метода с аннотацией @ Provides.
Может кто-нибудь объяснить, почему первый случайработает, а второй нет?Как я понял, @Binds должен создать класс возвращаемого типа конкретной реализации, передаваемой в качестве параметра.