2017-02-25 96 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 
     } 

}