调用kotlin.time.Duration.seconds方法提示无法作为函数调用如何解决
问题根因
你遇到的报错是因为当前使用的Kotlin 1.5.21版本中,kotlin.time.Duration还没有提供伴生对象的seconds工厂方法,这套API是Kotlin 1.6.0版本才正式稳定加入的,低版本调用时会找不到对应方法。
解决方案
方案1:升级Kotlin版本(推荐)
将项目Kotlin插件版本升级到1.6.0及以上即可,修改build.gradle.kts中的插件配置:
plugins { id("org.jetbrains.kotlin.jvm") version "1.6.21" // 选择更高的稳定版本也可 }
升级后你原本的Duration.seconds(5)写法就可以正常运行,同时1.6及以上版本的kotlin.timeAPI已经稳定,不需要再加@ExperimentalTime注解。
注意升级Kotlin版本后,需要同步升级Kotest等相关依赖到对应兼容版本,避免出现运行时兼容性异常。
方案2:保留当前Kotlin版本,使用兼容写法
如果暂时不想升级Kotlin版本,可以使用1.5版本支持的两种写法实现相同效果:
- 你当前在用的写法,无需额外调整:
注意需要导入5.toDuration(DurationUnit.SECONDS)kotlin.time.DurationUnit包 - 更简洁的扩展属性写法:
只要导入5.secondskotlin.time.seconds扩展即可使用,写法更简短。
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

