У меня есть эта зависимость:
@Singleton
class SpiceMix @Inject constructor(@field:[Named("oregano")] private val oregano: Spice,
@field:[Named("sage")] private val sage: Spice,
@field:[Named("rosemary")] private val rosemary: Spice)
И модуль для выполнения своих зависимостей:
@Module
class SpiceModule {
@Provides
@Named("oregano")
@Singleton
fun provideOregano(): Spice = Oregano()
@Provides
@Named("sage")
@Singleton
fun provideSage(): Spice = Sage()
@Provides
@Named("rosemary")
@Singleton
fun provideRosemary(): Spice = Rosemary()
Затем SpiceMix
вводится в разных местах моего приложения.
Однако это не компилируется, и я получаю сообщение об ошибке:
Spice cannot be provided without an @Provides-annotated method
Я думаю, что аннотации @Named не совсем работают в моей подписи конструктора. Я не совсем уверен, как я могу заставить его работать.
Примечание. Это компилируется отлично, если я помещаю аннотации Named и изменяю типы параметров конструктора на их конкретные формы. Тем не менее, Spice - это интерфейс, и мне нужно это для насмешливых целей в моих тестах.
Что я могу сделать?