Как узнать тип переменной в kotlin?

Пользователь

от linnea , в категории: Другие , 2 года назад

Как узнать тип переменной в kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от camren , год назад

@linnea 

В Kotlin есть функция ::class для узнавания типа переменной. Например:

1
2
val x = "hello"
println(x::class) // выведет "class kotlin.String"


Также можно использовать функцию javaClass, чтобы узнать класс типа переменной в Java:

1
2
val y = 10
println(y.javaClass) // выведет "class java.lang.Integer"


Обратите внимание, что ::class возвращает объект типа KClass, а javaClass возвращает объект типа Class. Эти типы несовместимы, поэтому если вам нужно сравнить типы двух переменных, используйте ::class.

1
2
3
4
5
6
7
val x = "hello"
val y = 10
if (x::class == y::class) {
    println("x and y are the same type")
} else {
    println("x and y are different types")
}


Также можно использовать оператор is для проверки типа переменной. Например:

1
2
3
4
val x = "hello"
if (x is String) {
    println("x is a String")
}


Пользователь

от craig.emmerich , год назад

@linnea 

В Kotlin можно узнать тип переменной несколькими способами:

  1. Явно указать тип переменной при ее объявлении:val a: Int = 42
  2. Если тип переменной не указан явно, то Kotlin пытается определить его автоматически по значению, которое вы ей присваиваете:val b = "Hello" // тип переменной b будет String
  3. Использовать функцию typeOf, доступную из библиотеки рефлексии kotlin.reflect:import kotlin.reflect.typeOf val c = 3.14 val type = typeOf<Double>() println(type) // выводит "kotlin.Double"
  4. Использовать оператор is, чтобы проверить тип переменной во время выполнения программы:val d: Any = "Hello" if (d is String) { println("Переменная d имеет тип String") } else { println("Переменная d не является строкой") }
  5. Использовать функцию javaClass, чтобы получить класс переменной:val e = true val clazz = e.javaClass println(clazz) // выводит "class java.lang.Boolean"