Android: Cómo hacer convertidores de tipo (para Habitación) generics para todos Lista de objects en Kotlin

Estoy usando Room como la solución de database local en mi proyecto. Para cada list de cierto tipo de object, he agregado convertidores de tipo al proyecto, por lo que el convertidor de tipo se vería así:

@TypeConverter fun convertListToString(video: List<VideoType>): String { val videoArray = arrayOfNulls<VideoType>(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<VideoType> { val videoArray = videoString.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val videos = ArrayList<VideoType>() val gson = Gson() for (i in 0 until videoArray.size - 1) { videos.add(gson.fromJson(videoArray[i], VideoType::class.java)) } return videos } 

El único problema es que tengo una gran cantidad de lists de diferentes types que deben convertirse, por lo que actualmente solo estoy copyndo este código para cada tipo. Me gustaría usar medicamentos generics, pero hasta ahora no he podido encontrar la manera de hacerlo.

Por ejemplo, usando algo como:

 @TypeConverter inline fun <reified T> convertStringToList(string: String): List<T> { val objectArray = string.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val objects = ArrayList<T>() val gson = Gson() for (i in 0 until objectArray.size - 1) { objects.add(gson.fromJson(objectArray[i], T::class.java)) } return objects } 

no funciona y causa un error de compilation con Android Studio que me da un error al decir: los convertidores de tipo deben ser públicos

¿Alguien tiene una idea de cómo puedo usar generics para mi Room TypeConverter?