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 } }