假设我有任何课程,比如这个:
class SomeClass(val aThing: String, val otherThing: Double)
然后我用反射来分析这个类的字段:
for(field in SomeClass.declaredMemberProperties){
}
如何检查每个字段的类型?
由于 Kotlin 没有字段,只有带有支持字段的属性,因此您应该检查属性的返回类型。
尝试这个:
class SomeClass(val aThing: String, val otherThing: Double)
for(property in SomeClass::class.declaredMemberProperties) {
println("${property.name} ${property.returnType}")
}
UPDATE:
如果类不使用没有支持字段的自定义 getter 和/或 setter,您可以像这样获取支持字段的类型:
property.javaField?.type
作为一个完整的示例,这里是您的类,其中包含一个名为 foo 的附加 val 属性,带有自定义 getter(因此不会创建支持字段)。您将看到该属性的 getJavaField() 将返回 null。
class SomeClass(val aThing: String, val otherThing: Double) {
val foo : String
get() = "foo"
}
for(property in SomeClass::class.declaredMemberProperties) {
println("${property.name} ${property.returnType} ${property.javaField?.type}")
}
UPDATE2:
Using String::class.createType()
将返回每个 KClass 的 KType,因此您可以使用例如property.returnType == String::class.createType()
找出它是否是一个(kotlin)字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)