如何在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())