Как я могу остановить создание Kotlin нескольких перегруженных методов Java из одной функции Kotlin с необязательными параметрами - PullRequest
0 голосов
/ 17 сентября 2018

В моем коде есть функция с такими аннотациями:

@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 создавать несколько методов, возможно, есть другой обходной путь, который может помочь в этой ситуации?

1 Ответ

0 голосов
/ 17 сентября 2018

Для такой функции, если вы не используете аннотацию @JvmOverloads, Kotlin создает ровно два метода, относительно количества необязательных параметров. Один метод имеет обычную подпись, а другой дополнительно принимает битовую маску параметров, которые были переданы. Нет способа избежать создания нескольких методов.

В этом случае я бы просто создал две отдельные функции: «при попытке войти или зарегистрироваться без электронной почты» и «при попытке войти или зарегистрироваться по адресу электронной почты ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...