случае нельзя написать такой метод?
fun <T> setItemForPosition(array: Array<in T>,
position: Int,
item: T): T {
array[position] = item
return array[position]
}
Я знаю, что у меня коллекция содержит T. Я вставляю элемент и хочу этот же элемент вернуть из этой же коллекции.
Или тут идет рассчет на то, что используя in я как бы говорю, что T - это либо T, либо один из его супер типов, либо Any?? А на самом деле в списке может еще оказаться и какой-нибудь подтип T.
Так что ли?
Дженерики - нормально. Вот проекции - это тяжело, причем где угодно. Вообще, надо стараться где можно использовать declaration-site variance, оно немного прозрачнее. С массивами отдельная история. Старайтесь не мешать их с дженериками.
Потому что вы хотите вернуть объект типа T, но в array может лежать любой из его супертипов
Обсуждают сегодня