Преобразовать объект класса в карту

#java #android #kotlin

#java #Android #kotlin

Вопрос:

У меня есть класс, полный строк типа

 data class TestClass (
var par1: String?,
var par2: String?,
var par3: String?
)
  

И я хочу преобразовать его в карту, где ключ и значение являются строковыми. Каков наилучший способ сделать это в Kotlin?

Комментарии:

1. Какие свойства вы пытаетесь преобразовать в карту? Пожалуйста, уточните ваши вопросы, поскольку неясно, что вы пытаетесь сделать.

Ответ №1:

Для реализации этого можно использовать отражение Kotlin, добавить kotlin-reflect библиотеку в путь к классу приложения и использовать подобный код:

 
fun TestClass.asMap() = this::class.declaredMemberProperties
        .map {
          it as KProperty1<TestClass, Any?>
          it.name to it.get(this).toString()
        }.toMap()

  

Вместо этого мы приводим declaredMemberProperties элемент из звездообразной проекции к типу с Any? . Параметр не отмечен из-за удаления типов JVM, но он все еще требуется.