From 774c7f8cc27a0851b84e8fc1da290370b4273ca5 Mon Sep 17 00:00:00 2001 From: server_main Date: Tue, 18 Aug 2026 05:54:57 +0000 Subject: [PATCH] fix: CopyData for val --- .../club/itstudio/itmanager/entity/DataCopy.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/backend/src/main/kotlin/club/itstudio/itmanager/entity/DataCopy.kt b/src/backend/src/main/kotlin/club/itstudio/itmanager/entity/DataCopy.kt index 8108fc1..001fc67 100644 --- a/src/backend/src/main/kotlin/club/itstudio/itmanager/entity/DataCopy.kt +++ b/src/backend/src/main/kotlin/club/itstudio/itmanager/entity/DataCopy.kt @@ -7,6 +7,7 @@ import kotlin.reflect.full.createInstance import kotlin.reflect.full.declaredMemberProperties import kotlin.reflect.full.memberProperties import kotlin.reflect.jvm.isAccessible +import kotlin.reflect.jvm.javaField interface DataCopy { fun toAnotherObject( @@ -19,15 +20,21 @@ interface DataCopy { return try { val vo = toClass.createInstance() for (prop in toClass.declaredMemberProperties) { - @Suppress("UNCHECKED_CAST") - val mutableProp = prop as? KMutableProperty1 ?: continue val value = when { sourceProps.containsKey(prop.name) -> sourceProps[prop.name] otherProperties.containsKey(prop.name) -> otherProperties[prop.name] else -> continue } - mutableProp.isAccessible = true - mutableProp.set(vo, value) + @Suppress("UNCHECKED_CAST") + val mutableProp = prop as? KMutableProperty1 + if (mutableProp != null) { + mutableProp.isAccessible = true + mutableProp.set(vo, value) + } else { + val field = prop.javaField ?: continue + field.isAccessible = true + field.set(vo, value) + } } vo } catch (e: ReflectiveOperationException) {