Постоянство комнаты генерирует ошибку: несовместимые типы: Списокне может быть преобразован в список <T>, где CAP # 1 является новой переменной типа - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь написать конвертер типов для класса List, используя библиотеку постоянства помещения, а для сериализации я использую библиотеку Kotlinx.Serialization.

Я создал абстрактный класс для Collection Converter.

abstract class BaseCollectionConverter<T> {

    abstract val serializer: KSerializer<T>

    @TypeConverter
    fun toStringCollection(json: String): T {
        return Json.parse(serializer, json)
    }

    @TypeConverter
    fun toCollectionString(list: T): String {
        return Json.stringify(serializer, list)
    }
}

А вот и реализация абстрактного класса.

class QuestionCollectionConverter : BaseCollectionConverter<List<Survey.Question>>() {

    override val serializer: KSerializer<List<Survey.Question>>
        get() = Survey.Question.serializer().list
}

Вопрос class - это просто класс данных с аннотацией @ Serializable .Теперь, когда я пытаюсь построить приложение, компилятор выдает следующую ошибку:

error: incompatible types: List<CAP#1> cannot be converted to List<Question>
where CAP#1 is a fresh type-variable:
CAP#1 extends Question from capture of ? extends Question

Есть ли способ решить эту проблему?

...