如何将下面的代码转换为泛型类,以便可以指定类型参数T
而不是具体类型User
?
class UserService : BaseService {
val query = datastore.createQuery(User::class.java)
}
答案 0 :(得分:2)
@Ufkoku是正确的,但我想更多的解释可能会有所帮助。
your first line
0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5
请注意,使用Kotlin的reified generics,您还可以为上面创建一个便利构造,允许您在不传递class UserService<T>(val clazz: Class<T>) : BaseService {
val query = datastore.createQuery(clazz)
}
实例的情况下构造一个:
Class
那么您可以将它们构建为class UserService<T>(val clazz: Class<T>) : BaseService {
val query = datastore.createQuery(clazz)
companion object {
inline fun <reified T> create() = UserService(T::class.java)
}
}
或val s = UserService(String::class.java)
答案 1 :(得分:0)
class Service<T>(val type: Class<T>) {
val query: Object
init {
//init query
}
}