Скажем, у нас есть следующие типы:
abstract class Generic_B
interface Generic_A<Generic_B>
class Concrete_B : Generic_B()
class Concrete_A : Generic_A<Concrete_B>
fun main(args: Array<String>) {
val a = Concrete_A();
foo(a);
}
fun foo(thing: Generic_A<Generic_B>) {
}
Я получаю сообщение об ошибке:
Error:(27, 9) Kotlin: Type mismatch: inferred type is Concrete_A but Generic_A<Generic_B> was expected
Я не совсем понимаю ошибку.
Concrete_A
является экземпляром Generic_A
и параметризован для конкретного экземпляра Generic_B
. Поэтому я чувствую, что вывод типа должен совпадать.
Я думаю, у меня следующие вопросы:
- Почему вывод типа не работает? (это случай более высокого родственного полиморфизма?)
- Как мне обойти это?