Я пытаюсь написать метод, который будет сравнивать «общие свойства» (разделяющие одно и то же имя / тип) двух объектов в Kotlin.Он предназначен для использования в тестах, для сравнения «ожидаемых» с «фактическими» объектами, которые не относятся к одному и тому же типу.
На данный момент это упрощенная версия кода:
val obj1Props = obj1::class.memberProperties
val obj2Props = obj2::class.memberProperties
val commonPropertyPairs = obj1Props.map { obj1Prop ->
obj1Prop to obj2Props.find { obj2Prop -> obj1Prop.name == obj2Prop.name } }
.filter { pair -> pair.second != null }
commonPropertyPairs.forEach { pair ->
pair.first.get(obj1)
}
В настоящее время я получаю это сообщение об ошибке в «pair.first.get» в нижней части:
Запроектированный тип KProperty1<out Any, Any?>
запрещает использование public abstract fun get(receiver: T): R defined in kotlin.reflect.KProperty1
Я понимаю, что не могу использовать абстрактные методы, что мне делать вместо этого?