Получить тип переменной в Котлине

Как найти тип переменной в Kotlin? В Java есть instanceof , но Kotlin не существует:

 val properties = System.getProperties() // Which type? 

Вы можете использовать отражение, чтобы сделать это:

 val widget = ... println("${widget::class.qualifiedName}") // with package name or... println("${widget::class.simpleName}") // ... only class name 

Пожалуйста, обратите внимание:

На платформе Java компонент времени выполнения, необходимый для использования функций отражения, распространяется как отдельный JAR-файл (kotlin-reflection.jar). Это делается для уменьшения требуемого размера библиотеки времени выполнения для приложений, которые не используют функции отражения. Если вы используете отражение, убедитесь, что .jar-файл добавлен в путь к классам вашего проекта.

Источник: https://kotlinlang.org/docs/reference/reflection.html#bound-class-references-since-11

Чтобы проверить конкретный тип, вы можете использовать оператор is .

 if(widget is Widget) { // ... } 
Intereting Posts
Экспериментальная реализация с сохранением пространства в Котлине (ошибка Gradle) Почему этот тип еще нужен, хотя он уже был уверен в этом примере? Ожидание объявления члена Классы данных Kotlin содержат открытые функции Генериры Котлина Массив <T> приводит к «Невозможно использовать T как параметр типа reified. Вместо этого используйте класс, но List <T> не делает Параметр не соответствует; SimpleXML Android Dagger 2.11 с Kotlin, ContributesAndroidInjector Аннотация Шаблон Nullable var внутри строки Почему я не могу указать, где я хочу, чтобы мой файл Kotlin был удален в Android Studio? Как установить конфигурации package.json с помощью kotlin-frontend-plugin Суммируйте подмножество чисел в списке Классы класса Kotlin, которые наследуют классы Java, также наследуются от Any? Kotlin androidTest: тесты закончились. Пустой набор тестов Kotlin – Лучший способ конвертировать Singleton DatabaseController в Android ClassMapper: нет setter / field для aBooleanType