Iva*_*ers 9 java reflection kotlin
我怎样才能获得Kotlin数据类的列表declaredFields呢?像Java一样getDeclaredFields()
如果这是可能的,还可以过滤public和private字段?(像Java一样Modifier.isPrivate(field.getModifiers()))
hot*_*key 12
可能你想要的是获取类的属性,而不是字段.这可以按如下方式完成:
MyClass::class.declaredMemberProperties
Run Code Online (Sandbox Code Playgroud)
通过Java反射也可以获得字段:
MyClass::class.java.declaredFields
Run Code Online (Sandbox Code Playgroud)
但是字段在Kotlin中是一个实现细节,因为某些属性可能没有支持字段.
至于可见性,对于属性,您可以检查getter可见性修饰符:
val p = MyClass::class.declaredMemberProperties.first()
val modifiers = p.javaGetter?.modifiers
Run Code Online (Sandbox Code Playgroud)
注意:这是null在简单private val或@JvmField使用的情况下.然后你可以检查p.javaField.
然后,如果modifiers不是null,只需检查它Modifier.isPrivate(...).
Kotlin中的属性可以为getter和setter提供单独的可见性修饰符,但是setter访问不能比getter更宽松,这实际上是属性可见性.
| 归档时间: |
|
| 查看次数: |
7532 次 |
| 最近记录: |