在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
。