не могу указать в addNode "T" если T является наследником от INode чего и требует интерфейс
ты можешь указать, но у класса-родителя есть дженерик
Потому что в интерфейсе нет дженерика
ответ: потому дженерик даст тебе ковариантное переопределение, а в интерфейсе у тебя инвариантное. пример: interface A { fun foo(a: A) } interface B<T : A> : A { fun foo(a: T) } val a = B<C>() as A a.foo(A()) // некорректно, B требует, чтобы аргумент был типа C
попробуй перед дженериком поставить in
Обсуждают сегодня