Функция расширения Котлина: нерешенные ссылки

Я пытаюсь создать эту функцию расширения:

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 члена 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>()

Intereting Posts
Побитовая операция «и» в котлин Котлинский шаблон для использования Spring Data JPA «запрос по примеру» неразрешенная ссылка: запуск Связывание данных: ObservableField со значением лямбда не компилируется Ошибка «Расширение с именем» android «не существует» при добавлении проекта Kotlin в Android Преобразование HashMap с помощью moshi воспроизведение любого встроенного видео в веб-браузере в Android с намерением Выбрать как в спящем режиме Метод hashMapOf () в Котлине Объявление пустых коллекций в Котлине Флажок в Recycler Элемент View, если установлен в true, проверяется на наличие ложных срабатываний Kotlin – присвоить значение переменной enum переменной без значения. SocketException: сбой sendto: EBADF (дескриптор Bad файла) Класс абстрактных обобщений Котлина Каков правильный синтаксис для переопределения функции члена интерфейса с помощью модификатора видимости?