如何阻止Kotlin使用可选参数从一个Kotlin函数中创建多个重载Java方法

如何阻止Kotlin使用可选参数从一个Kotlin函数中创建多个重载Java方法,java,kotlin,Java,Kotlin,我的代码中有一个带有注释的函数: @When("^trying to login or register with email address \"([^\"]*)\"$") fun whenLoginOrRegister(email: String? = null) { email?.let { user.email = it } loginViewModel.whenLoggingIn() } Kotlin在这里所做的是根据可选参数的数量创建两个或多个函数重载。如何强制Ko

我的代码中有一个带有注释的函数:

@When("^trying to login or register with email address \"([^\"]*)\"$")
fun whenLoginOrRegister(email: String? = null) {
    email?.let { user.email = it }
    loginViewModel.whenLoggingIn()
}
Kotlin在这里所做的是根据可选参数的数量创建两个或多个函数重载。如何强制Kotlin只创建一个方法而不是多个方法?最好是只有一个方法只接受
null


背景:我使用Cucumber,它通过反射搜索这些带注释的函数。但是具有相同注释的两个函数会导致异常,因为不允许有歧义。如果我不能强制Kotlin创建多个方法,可能有一种不同的解决方法可以在这种情况下提供帮助?

对于这样的函数,如果您不使用
@JVMLowloads
注释,Kotlin只创建两个方法,关于可选参数的数量。一个方法具有常规签名,另一个方法额外接受已传递参数的位掩码。无法避免创建多个方法


在这种情况下,我只需创建两个单独的函数,“尝试登录或注册时不使用电子邮件”和“尝试登录或注册时使用电子邮件地址”。

对于这样的函数,如果不使用
@JvmOverloads
注释,Kotlin只创建两个方法,关于可选参数的数量。一个方法具有常规签名,另一个方法额外接受已传递参数的位掩码。无法避免创建多个方法

在这种情况下,我只需创建两个单独的函数,“尝试登录或注册时不使用电子邮件”和“尝试登录或注册时使用电子邮件地址”