Kotlin转换为泛型类

时间:2017-02-25 21:33:12

标签: generics kotlin

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

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

2 个答案:

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

}