2017-02-25 99 views
0

怎样把下面的代码到一个通用类,这样一方面可以指定类型参数T而不是User具体类型?科特林上转换为通用类

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

回答

2

@Ufkoku是正确的,但我想详细说明一下可能的帮助。

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)val s = UserService.create<String>()

0
class Service<T>(val type: Class<T>) { 

     val query: Object 

     init { 
      //init query 
     } 

}