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

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

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

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

JvmOverloads不能用于接口方法

但是,如果我使用它重写函数,然后我得到

平台声明冲突:以下声明具有相同的JVM签名(getClientCompanyId(JLorg / joda / time / DateTime;)J):

  • @JvmOverloads公开开放的乐趣getClientCompanyId(clientId:Long,date:DateTime = …):Long
  • @JvmOverloads公开开放的乐趣getClientCompanyId(clientId:Long,date:DateTime = …):Long

只是为了记录:当我尝试把默认值重写方法我得到的消息:

重写函数不允许指定参数的默认值

在kotlin中做一个可能的事情吗? 感谢所有的答案。

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

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