Kotlin扩展功能:未解决的参考

时间:2016-12-30 10:16:22

标签: android realm kotlin

我正在尝试创建此扩展功能:

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)
}

完美无缺!我不明白为什么。

1 个答案:

答案 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>()