首页 文章

如何在Kotlin中使用带有接口的@jvmoverloads

提问于
浏览
12

我的代码库是混合java和kotlin代码 . 我想在接口方法上使用@JvmOverloads和默认参数 . 像那样:

@JvmOverloads
fun getClientCompanyId(clientId: Long, date: DateTime = DateTime.now()): Long

不幸的是我不能这样做,我得到的信息是:

JvmOverloads不能用于接口方法

但是,如果我在重写函数上使用它,那么我得到

平台声明冲突:以下声明具有相同的JVM签名(getClientCompanyId(JLorg / joda / time / DateTime;)J):@ JvmOverloads public open fun getClientCompanyId(clientId:Long,date:DateTime = ...):Long @ JvmOverloads public open fun getClientCompanyId(clientId:Long,date:DateTime = ...):Long

并且仅用于记录:当我尝试将默认值放在重写方法中时,我得到以下消息:

不允许覆盖函数在其参数上指定默认值

在kotlin做一件事可能吗?感谢所有的答案 .

1 回答

  • 2

    我相信你能做的最好的事情就是自己定义重载 . 例如 . :

    fun getClientCompanyId(clientId: Long, date: DateTime): Long
    fun getClientCompanyId(clientId: Long) = getClientCompanyId(clientId, DateTime.now())
    

相关问题