2016-12-30 106 views
1

我试图创建此扩展功能:科特林扩展功能:无法解析的参考

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

它完美!我不明白为什么。

回答

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

+1

你是对的!非常感谢! –