Это проблема дисперсии. Это связано с подстановочными знаками Java.
Функция:
@Provides
fun getIntArgLambda(): (Int) -> Unit = {}
В Java возвращается:
kotlin.jvm.functions.Function1<java.lang.Integer, kotlin.Unit>
В то время как параметр intLambda
функции:
@Provides
fun getRecyclerViewAdater(intLambda: (Int) -> Unit, noArg: () -> Unit): CustomAdapter = CustomAdapter(intLambda, noArg)
В Java есть:
kotlin.jvm.functions.Function1<? super java.lang.Integer, kotlin.Unit>
Для подавления подстановочного знака вы можете использовать @JvmSuppressWildcards
:
@Module
class LambdaModule {
@Provides
fun getIntArgLambda(): (Int) -> Unit = {}
@Provides
fun getNoArgLambda(): () -> Unit = {}
@Provides
fun getRecyclerViewAdater(intLambda: Function1<@JvmSuppressWildcards Int, Unit>, noArg: () -> Unit): CustomAdapter = CustomAdapter(intLambda, noArg)
}