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