如何解决带有反射的数据类的新实例
我正在使用反射创建一个新的数据类实例。有没有比下面的代码更好的解决方案?
private inline fun <reified TEntity : Any> queryMapping(params: MultiValueMap<String,String>): TEntity {
val entity = TEntity::class
var resultInstance = entity.createInstance()
params.forEach { param ->
val property = entity.memberProperties.find { member ->
member.name.toLowerCase() == param.key.toLowerCase() }
if (property is KMutableProperty<*>) {
when(property.returnType.javaType.typeName.toLowerCase()) {
"int" -> property.setter.call(resultInstance,param.value.first().toInt())
"java.lang.string" -> property.setter.call(resultInstance,param.value.first())
}
}
}
return resultInstance
}
在这种情况下,数据类属性必须是可变的(var)。 数据类示例:
data class PostPerson(
var Id: Int = 0,var Name: String = "",var Age: Int = 0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。