我在我的项目中使用Room作为本地数据库解决方案。 对于我添加类型转换器到项目中,以便类型转换器会是这个样子的某个对象类型的每个列表:Android:如何为所有通用类型转换器(for Room)制作Kotlin中的对象列表

@TypeConverter

fun convertListToString(video: List): String {

val videoArray = arrayOfNulls(video.size)

for (i in 0..video.size - 1) {

videoArray[i] = video[i]

}

var str = ""

val gson = Gson()

for (i in videoArray.indices) {

val jsonString = gson.toJson(videoArray[i])

str = str + jsonString

if (i < videoArray.size - 1) {

str = str + strSeparator

}

}

return str

}

@TypeConverter

fun convertStringToList(videoString: String): List {

val videoArray = videoString.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()

val videos = ArrayList()

val gson = Gson()

for (i in 0 until videoArray.size - 1) {

videos.add(gson.fromJson(videoArray[i], VideoType::class.java))

}

return videos

}

唯一的问题是,我有一大堆不同类型的列表的那个需要转换,所以目前我只是复制这个代码的每一种类型。我想使用泛型,但到目前为止还没有弄清楚如何去做。

例如使用类似:

@TypeConverter

inline fun convertStringToList(string: String): List {

val objectArray = string.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()

val objects = ArrayList()

val gson = Gson()

for (i in 0 until objectArray.size - 1) {

objects.add(gson.fromJson(objectArray[i], T::class.java))

}

return objects

}

不能正常工作,并导致了Android Studio的编译错误,给我一个错误说服力:类型转换器必须是公共

任何人的想法如何我可以为我的房间类型转换器使用泛型?

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐