Проблема, с которой вы сталкиваетесь, связана с стиранием типа .
Типы List<PublishRequest>
и List<String>
стираются до List<*>
, поэтому у вас будет JVM подпись cla sh.
Для решения вашей проблемы у вас есть два разных решения.
- Измените их имена и избегайте подписи cla sh:
suspend fun publishRequests(publishRequests: List<PublishRequest>) {}
suspend fun publishEvents(events: List<String>) {}
Используйте одну функцию с типом
reified
и обрабатывайте различные классы типов внутри этой функции:
suspend inline fun <reified T> publish(objects: List<T>) {
when {
PublishRequest::class.java.isAssignableFrom(T::class.java) -> // it's a list of PublishRequest
T::class == String::class -> // it's a list of String
}
}