У меня есть функция, которая вызывает перегруженную функцию funcA
. Допустим, у нас есть разные типы A
, B
и C
, которые реализуют абстрактный класс Top<T extends Serializable>
. Теперь данная функция funcA
существует для универсального типа funcA(p0:Top<T extends Serializable>)
, а также для других данных типов funcA(p0:A)
, funcA(p0:B)
и т. Д.
Теперь я хочу вызвать эту функцию, когда я получил только общую переменную it:Top<out Serializable>
. Если я сейчас просто напишу funcA(it)
, Kotlin не сможет автоматически определить, какую перегруженную функцию вызывать, поскольку точный тип теперь удален.
Что работает, так это проверять данные типы и приводить их перед вызовом funcA
:
when(it) {
is A -> funcA(it)
is B -> funcA(it)
is C -> funcA(it)
else -> error("Cannot infer correctly")
}
Есть ли способ решить эту проблему лучше?