Есть ли способ указать несколько возможных типов для аргумента функции в Kotlin?
Я пишу тест для API метода, который может принимать несколько типов данных, но, понятное дело, не все. Мне бы хотелось найти возможность передавать в функцию один из возможных типов в духе String or Int
.
Знаю возможные варианты решения, но мне они не нравятся:
- Использовать тип
Any
- небезопасно и как-то не очень вообще. - Повторно объявить функцию, где будет указан уже другой тип аргумента - невозможно, некоторые методы принимают множество подобных аргументов. Я так понимаю, что так придется делать для каждой комбинации разных типов?
Пример минимально воспроизводимого кода:
fun main() {
fun myRequestMethod(
firstParam: Any, //actualy can be ONLY String or Int
secondParam: Any, //actualy can be ONLY String or Int
thirdParam: Any //actualy can be ONLY String or Int
) {
//do api-request
println("$firstParam, $secondParam, $thirdParam")
}
myRequestMethod(1, 2, 3) //acceptible with Any type
myRequestMethod("1", 2, "3") //acceptible with Any type
myRequestMethod(mapOf("1" to 1), listOf(2, 2, 2), "3") //NOT acceptible with Any type
myRequestMethod(1, listOf(1, 2, 3), mapOf("1" to 1)) //NOT acceptible with Any type
}
Может есть какое-то решение, которое я не смог найти? Спасибо!