如何将下面的代码转换为泛型类,以便可以指定类型参数T而不是具体类型User?
class UserService : BaseService {
val query = datastore.createQuery(User::class.java)
}
Run Code Online (Sandbox Code Playgroud)
@Ufkoku 是正确的,但我认为更多的解释可能会有所帮助。
class UserService<T>(val clazz: Class<T>) : BaseService {
val query = datastore.createQuery(clazz)
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用 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)
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以将它们构造为val s = UserService(String::class.java)或者val s = UserService.create<String>()
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |