2016-12-30 112 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

你是對的!非常感謝! –