我正在尝试创建此扩展功能:
fun <T : RealmObject> Realm.query(myClass : KClass<T>) {
RealmQuery.createQuery(this, myClass::class.java)
}
这不会编译。编译器说:&#34;未解决的参考:myClass&#34;我写的时候
myClass::class.java
但如果我这样做:
fun <T : RealmObject> Realm.query(myClass : Class<T>) {
RealmQuery.createQuery(this, myClass)
}
完美无缺!我不明白为什么。
答案 0 :(得分:5)
myClass
已经是KClass<T>
您可以使用myClass.java
成员函数,如下所示:
fun <T : RealmObject> Realm.query(myClass : KClass<T>) =
RealmQuery.createQuery(this, myClass.java)
为了简化用法,您可以实际使用inline
,如此
inline fun <reified T : RealmObject> Realm.query() =
RealmQuery.createQuery(this, T::class.java)
然后将其用作val userQuery = Realm.query<User>()