Учитывая простой класс данных, такой как:
data class TestSimple(
val country: String,
var city: String? = null,
var number: Int? = null,
var code: Long? = null,
var amount: Float? = null,
var balance: Double? = null
)
Можно ли как-нибудь использовать kotlin-reflect
, чтобы найти тип данных свойств?Я получил все свойства через:
val allFields = this::class.declaredMemberProperties.map {
it.name to it
}.toMap()
Я получил только до allFields["number"].returnType
, который возвращает KType
.Я не мог найти способ проверить, является ли KType
Int
или Long
.
Я пытаюсь избежать кода, который я в настоящее время использую для приведения входящих числовых данных JSON к соответствующим даннымтип:
fun castToLong(value: Any): Long {
val number = try {
value as Number
} catch (e: Exception) {
throw Exception("Failed to cast $value to a Number")
}
return number.toLong()
}