如何在Guice中绑定Kotlin函数

如何在Guice中绑定Kotlin函数,kotlin,guice,Kotlin,Guice,我的Kotlin课程与此类似: class MyClass @Inject constructor(val work: (Int) -> Unit)) { ... } 绑定和@提供的都不起作用: class FunctionModule : AbstractModule() { override fun configure() { bind(object : TypeLiteral<Function1<Int, Unit>>() {}).

我的Kotlin课程与此类似:

class MyClass @Inject constructor(val work: (Int) -> Unit)) { ... }
绑定
@提供的
都不起作用:

class FunctionModule : AbstractModule() {

    override fun configure() {
        bind(object : TypeLiteral<Function1<Int, Unit>>() {}).toInstance({})
    }

    @Provides
    fun workFunction(): (Int) -> Unit = { Unit }
    }
}
class FunctionModule:AbstractModule(){
覆盖乐趣配置(){
绑定(对象:TypeLiteral(){}).toInstance({})
}
@提供
fun workFunction():(Int)->Unit={Unit}
}
}
我不断得到错误:

kotlin.jvm.functions.Function1没有实现?super java.lang.Integer,kotlin.Unit>已绑定


如何使用Guice为Kotlin函数注入实现?

如果您将注入
Function1
,而不是
(Int)->Unit

tl;dr-用途:

bind(object : TypeLiteral<Function1<Int, @JvmSuppressWildcards Unit>>() {})
    .toInstance({})
参数
work
的类型(至少根据Guice)为:


kotlin.jvm.functions.function1注意,
{Unit}
可以用
{}
简化,这就是
绑定(object:TypeLiteral(){})的作用。问题中显示了它产生的错误。
class MyClass @Inject constructor(val work: (Int) -> Unit)) { ... }
kotlin.jvm.functions.Function1<? super java.lang.Integer, kotlin.Unit>
bind(object : TypeLiteral<Function1<Int, Unit>>() {}).toInstance({})