Kotlin转换为泛型类

如何将下面的代码转换为泛型类,以便可以指定类型参数T而不是具体类型User

 class UserService : BaseService { val query = datastore.createQuery(User::class.java) } 

@Ufkoku是正确的,但我认为更多的解释可能有所帮助。

 class UserService<T>(val clazz: Class<T> : BaseService { val query = datastore.createQuery(clazz) } 

请注意,使用Kotlin的泛化泛型也可以为上面的方法创建一个方便的构造,它允许构造一个没有传递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)val s = UserService.create<String>()

 class Service<T>(val type: Class<T>) { val query: Object init { //init query } }