Kotlin - приведение к классу <T>или к классу <T> - PullRequest
1 голос
/ 09 января 2020

В Kotlin я могу привести Any к другому типу, подобному такому

val obj: Any = 123
val num: Int = obj as Int

В моем случае я хочу иметь возможность либо привести к Class<Int>, либо KClass<Int>, что-то вроде. ..

val obj: Any = 123
val kotlinClass = Int::class
val javaClass = Int::class.java

val num : Int = obj.castTo(kotlinClass)
val num2: Int = obj.castTo(javaClass)

Как именно этого можно достичь?

1 Ответ

4 голосов
/ 09 января 2020

Попробуйте это наоборот, то есть используйте класс для приведения объекта:

val num : Int = kotlinClass.cast(obj)
val num2 : Int = javaClass.cast(obj)

Обязательно добавьте kotlin-reflect в качестве библиотеки, если вам действительно требуется KClass.cast. В качестве альтернативы вы также можете быть заинтересованы в KClass.safeCast.

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