Kotlin перебор параметров класса и их значений
Есть класс с некоторым количеством параметров. Допустим, мы хотим переопределить метод toString чтобы нам возвращалась строка в формате похожем на JSON включающая все параметры класса (чтобы не переписывать функцию при добавлении новых параметров). Каким образом я могу перебрать все параметры класса, чтобы реализовать это?
Я пробовал использовать kotlin-reflect для этих целей, и смог получить параметры класса с их типами (что меня устраивает), но так я не могу получить значение самого параметра, т.к. property.getValue() требует экземпляр класса:
class User(
var name: String,
var age: Int,
var number: String
) {
override fun toString(): String {
var json = ""
for (property in this::class.memberProperties) {
json += "\"${property.name}\": \"${property.getValue(???)}\","
}
return "{$json}"
}
}
Что я упускаю и есть ли более оптимальное решение задачи?
Ответы (1 шт):
Автор решения: Eugene Krivenja
→ Ссылка
В вашем случае можно получать значения через геттер
for (property in this::class.memberProperties) {
json += "\"${property.name}\": \"${property.getter.call(this)}\","
}