如何獲得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_的文檔」 - 該文檔的鏈接如下。 –