У меня есть универсальный метод, как показано ниже
private fun <T> getSomething(): T {
return "something" as T
}
Как я могу вызвать этот метод с переменной типа T
?
val types = arrayListOf<Type>(String::class.java, Boolean::class.java)
types.forEach { type ->
val something = getSomething<type>() // Unresolved reference: type
}
Во время выполнения я не знаючто бы общего типа T
.Я получаю тип от types
и должен передать его с помощью общего метода getSomething
.
Вариант использования
Я хочу вызвать базу данных, в которой есть несколько таблиц.Примеры моделей выглядят так:
class User{
}
class Student{
}
Поскольку все вызывающие запросы в основном одинаковы, я хочу иметь универсальный метод для вызова базы данных и получения данных.
private fun <T> getData(model: String): List<T>?{
return when(model){
"user" -> getUsers()
"student" -> getStudents()
else -> null
}
}
Так что, когда я вызываю выше метод.В моем цикле я хочу передать Type
как User
или Student
.
val types = arrayListOf<Type>(User::class.java, Student::class.java)
types.forEach { type ->
val data = getData<type>(type.javaClass.simpleName) // Unresolved reference: type in <type>
}
Как мне этого добиться.