@When("^trying to login or register with email address \"([^\"]*)\"$") fun whenLoginOrRegister(email: String? = null) { email?.let { user.email = it } loginViewModel.whenLoggingIn() }
Kotlin在这里做的是根据可选参数的数量创建两个或更多的函数重载。如何强制Kotlin只创建一个方法而不是多个方法?最好只有一种方法可以简单地接受 null .
null
背景:我使用Cucumber,它通过反射来搜索这些带注释的函数。但是具有相同注释的两个函数会导致异常,因为不允许有歧义。如果我不能强迫Kotlin创建多个方法,也许有一个不同的解决方法可以在这种情况下提供帮助?
对于这样的函数,如果不使用 @JvmOverloads 注释,Kotlin创建了两个方法,关于可选参数的数量。一个方法具有常规签名,另一个方法另外接受已传递参数的位掩码。无法避免创建多个方法。
@JvmOverloads
在这种情况下,我只需创建两个单独的函数,“尝试登录或注册时不使用电子邮件”和“尝试登录或注册时使用电子邮件地址<email>”。