Вы не можете легко сделать это в Kotlin так же, как в JavaScript (если вы не готовы самостоятельно обрабатывать отражение), но есть возможность использовать функцию Kotlin, называемую Делегированные свойства (в частности, вариант использования Сохранение свойств на карте этой функции).
Вот пример, указывающий c для кодирования в исходном вопросе:
class Test(private val map: Map<String, String>) {
val propA: String by map
val propB: String by map
override fun toString() = "${javaClass.simpleName}(propA=$propA,propB=$propB)"
}
fun main() {
val rawResp: String? = """
propA=valueA
propB=valueB
""".trimIndent()
val props = rawResp?.split('\n')?.map { item ->
val (key, value) = item.split('=')
key to value
}?.toMap() ?: emptyMap()
val test = Test(props)
println("Property 'propA' of test is: ${test.propA}")
println("Or using toString: $test")
}
Это выводит:
Property 'propA' of test is: valueA
Or using toString: Test(propA=valueA,propB=valueB)
К сожалению, вы не можете использовать классы данных с делегированием свойства так, как вы ожидаете, поэтому вам нужно «заплатить цену» и определить переопределенные методы (toString
, equals
, hashCode
) самостоятельно, если они вам нужны.