我试图使用Room Persistence库为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
}
问题类只是一个带有 @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
有什么办法可以解决这个问题?