В чем разница между :: class и :: class. java в Kotlin? - PullRequest
6 голосов
/ 17 января 2020

В Java мы пишем .class (пример: String.class), чтобы получить информацию о данном классе. В Kotlin доступно для записи ::class или ::class.java. В чем разница между ними?

Ответы [ 2 ]

8 голосов
/ 17 января 2020

Используя ::class, вы получаете экземпляр KClass. Это Kotlin Reflection API, который может обрабатывать Kotlin такие функции, как свойства, классы данных и т. Д. c.

Используя ::class.java, вы получаете экземпляр класса. Это Java Reflection API, который взаимодействует с любым Java кодом отражения, но не может работать с некоторыми Kotlin функциями.

2 голосов
/ 17 января 2020

Согласно документации Kotlin, когда мы создаем объект с использованием любого типа класса, как показано ниже, ссылочным типом будет тип KClass.

val c = MyClass::class  // reference type of KClass

Kotlin ссылка на класс не совпадает с Java ссылка на класс. Чтобы получить ссылку на класс Java, используйте свойство. java в экземпляре KClass.

val c = MyClass::class.java  // reference type of Java

Для получения дополнительной информации см. Документацию Kotlin. https://kotlinlang.org/docs/reference/reflection.html#class -references

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...