Котлин. Ожидается Любой полученный MyObject

Я делаю список наблюдаемых объектов LiveData , которые должны содержать объект Resource ( https://developer.android.com/topic/libraries/architecture/guide.html#addendum ). Меня не волнует, какой тип данных содержит объект Resource .

 abstract class LiveResources : LiveData<Resource<Any>>() { private val mediatorLiveData = MediatorLiveData<Resource<Any>>() protected val resources = HashSet<LiveData<Resource<Any>>>() fun addResource(source: LiveData<Resource<Any>>) { resources.add(source) mediatorLiveData.addSource(source, resourceObserver) } fun removeResource(source: LiveData<Resource<Any>>) { resources.remove(source) mediatorLiveData.removeSource(source) } private val resourceObserver = Observer<Resource<Any>> { onSourceChange() } abstract fun onSourceChange() } 

К сожалению, когда я пытаюсь использовать LiveResources.addResource() с LiveData<Resource<List<String>>> я получаю ошибку TypeMismatch в моей среде IDE, заявив, что LiveData<Resource<Any>> .

Класс Resource (и / или LiveData) должен быть определен с общей ковариацией, чтобы заставить его работать. Вот так:

 class Resource<out T> // <- out marks generic type as covariant 

Не пробовал, но я думаю, что это сработает

fun <T:Any> addResource(source: LiveData<Resource<T>>)

Вы должны генерировать классы для принятия Resource<T> то есть LiveData<Resource<T>> . Any ковариантность любого объекта прошла, но я думаю, что вы не пытаетесь достичь этого.

Другим дружеским советом является то, что вам не нужно добавлять еще одну абстракцию поверх MediatorLiveData которая делает то же самое, что и вы.

Intereting Posts
Android: специальный календарь Java / Kotlin Calendar Котлин: дженерики и дисперсия Нечеткость разрешения перегрузки Котлина в стандартной библиотеке Можно ли запустить плагин kotlin grade с помощью jdk 7 Идиоматический способ пролитой последовательности в три списка с использованием Kotlin Kotlin – Расходы на более высокие порядки? Вызывающая (базовая) делегированная функция при использовании делегирования класса из переопределения Добавление числа в Android с помощью Kotlin Анимация вложенного фрагмента в фрагменте ViewPager запускается перед рендерингом Как вызвать метод ArrayAdapter.addAll в Котлине? Цель камеры не работает: она входит в блок catch и говорит: «Не удалось создать файл!» Котлин – когда выражение с возвращаемым типом функции Компилировать код kotlin как для JVM, так и для JavaScript Dagger2 не может получить доступ к nullable. javax.annotation.Nullable не найден Изменить уведомления в Realm для внутренних объектов?