如何获得Kotlin数据类的列表declaredFields
?像Java的getDeclaredFields()
Kotlin反射 - 得到一个类的所有字段名称
如果这是可能的,它也可以筛选为public
和private
字段? (像Java的Modifier.isPrivate(field.getModifiers())
)
如何获得Kotlin数据类的列表declaredFields
?像Java的getDeclaredFields()
Kotlin反射 - 得到一个类的所有字段名称
如果这是可能的,它也可以筛选为public
和private
字段? (像Java的Modifier.isPrivate(field.getModifiers())
)
可能你想要的是获得一个类的属性,而不是字段。这是可以做到如下:
MyClass::class.declaredMemberProperties
获取领域,也可以通过Java反射:
MyClass::class.java.declaredFields
但字段,而在科特林的实现细节,因为一些属性可能没有backing field。
至于知名度,为属性,你可以检查吸气可见性修饰符:
val p = MyClass::class.declaredMemberProperties.first()
val modifiers = p.javaGetter?.modifiers
注:这是null
在一个简单的private val
或@JvmField
的使用情况。那么你可以检查p.javaField
。
然后,如果modifiers
不是null
,只需与Modifier.isPrivate(...)
核对。
Kotlin中的房产可能有separate visibility modifiers for getter and setter,但是设置者的访问权限不能比getter更宽容,这实际上是属性可见性。
,是否有可能创建一个MyClass对象,并设置这些'declaredFields'(使用Java反射)与'Field.name'? – Ivaro18
确实存在Kotlin反射的文档:an overall summary of reflection和API docs包括KClass.members函数。您也可以跳转到该方法的声明,并且您将看到它也记录在源代码中。
您对字段(即原始java类)或属性(即javabeans或Kotlin类)感兴趣吗?你只处理Kotlin类还是Java类? –
只Kotlin类但@hotkey的解决方案适用于我的特定问题 – Ivaro18
“_没有关于此call_的文档” - 该文档的链接如下。 –