Kotlin扩展功能:未解决的参考
我试图创建这个扩展功能:
fun <T : RealmObject> Realm.query(myClass : KClass<T>) { RealmQuery.createQuery(this, myClass::class.java) }
这不会编译。 编译器说:“无法解析的引用:myClass”,当我写
myClass::class.java
但是,如果我这样做:
fun <T : RealmObject> Realm.query(myClass : Class<T>) { RealmQuery.createQuery(this, myClass) }
它完美的作品! 我不明白为什么。
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>()