如何创建以参数形式接收任何类型的类的函数?
我想打印传入参数及其值的类的字段 这是我的代码测试,但不起作用:
fun saveInPreference(klass: Any) {
for (prop in klass::class.memberProperties) {
println("${prop.name}") //Print field name of the class
println("${prop.name} = ${prop.get(prop.name)}") // Error not work, not get value of fields
}
}
谢谢
答案 0 :(得分:3)
好吧,您所使用的API的类型安全性仅比用例所需的类型安全。实际上,您从prop
获得的memberProperties
的类型是out
投影的类型,因此您不能仅传递从其获得的类型的实例而无需捕获方式。有关说明,请参见this Q&A。
对于您的用例,使用类型安全性较低的API call(obj)
代替get(obj)
就足够了:
for (prop in klass::class.memberProperties) {
/* ... */
println("${prop.name} = ${prop.call(prop.name)}")
}