У меня есть класс, который реализует интерфейс java.util.function.Function
, который я хотел бы внедрить для использования в другом классе, используя Dagger2:
class MyUsefulClass @Inject constructor() : Function<List<String>, String> {
override fun apply(lines: List<String>): String {
// Do stuff
return ""
}
}
Обычно я объявляю объявление @Binds
в класс модуля выглядит так:
@Module
interface MyModule {
@Binds
fun provideMyUsefulClass(concretion: MyUsefulClass): Function<List<String>, String>
}
Этот подход хорошо мне пригодился для всех других классов, которые есть в моем проекте, которые реализуют этот интерфейс, но в этом одном экземпляре я приветствуется сообщение об ошибке:
@Binds methods' parameter type must be assignable to the return type…
Что забавно, так это то, что изменение типа возвращаемого значения класса и объявления @Binds
на Function<MutableList<String>, String>
с Function<List<String>, String>
работает и все компилируется хорошо.
Что мне здесь не хватает? Сообщение об ошибке явно не соответствует действительности. Есть ли здесь какая-то серьезная ошибка, о которой я не знаю?