在块中指定方法参数类类型 'every'



在save()方法(Spring Framework)中使用任何()语句时,我有一个问题。我得到错误:

类型推断失败:在inline fun any(): T中没有足够的信息来推断参数T
请显式指定。

是否有任何方法传递方法参数,所以我不会有错误?我试图将对象作为参数传递,但save()方法创建了一个新对象,需要使用any()。

every { repository.save(any()) } returns classObject

传递对象时出错:

io.mockk。MockKException:没有找到答案:存储库(# 10).save (app.core.model.Class@734a4045)

您可以通过any<Type>()给函数一个类型参数。

的例子:

fun <T> any(defaultValue: T? = null): T? = defaultValue

fun main() {
val s = any<String>()
println(s)
val i = any<Int>()
println(i)
val j = any(10) // type inferred from arg
println(j)
val k: Int? = any() // type inferred from variable
println(k)
}

打印:

null
null
10
null

无法推断出类型的原因是,在你的情况下,save()可能接受的值类型Any因此编译器不能推断出任何特定类型。

顺便说一下,如果您需要在泛型函数中访问T, Kotlin允许您将函数设置为reified

最新更新