Хорошо, API, который вы используете, немного более безопасен для типов, чем требуется в вашем случае использования.Фактически, тип prop
, который вы получаете от memberProperties
, является out
-проектированным типом, поэтому вы не можете просто передать экземпляр типа, из которого он был получен, без захвата типа.См. этот вопрос и ответ для объяснения.
Что касается вашего варианта использования, достаточно использовать менее безопасный тип API, call(obj)
вместо get(obj)
:
for (prop in klass::class.memberProperties) {
/* ... */
println("${prop.name} = ${prop.call(prop.name)}")
}