Kotlinデータクラスのリストを得るにはどうすればdeclaredFields
ですか? JavaのようにgetDeclaredFields()
Kotlin reflection - クラスのフィールド名をすべて取得する
public
とフィールドをフィルタリングすることも可能ですか? (JavaのようにModifier.isPrivate(field.getModifiers())
)
Kotlinデータクラスのリストを得るにはどうすればdeclaredFields
ですか? JavaのようにgetDeclaredFields()
Kotlin reflection - クラスのフィールド名をすべて取得する
public
とフィールドをフィルタリングすることも可能ですか? (JavaのようにModifier.isPrivate(field.getModifiers())
)
おそらくあなたがしたいのは、クラスのプロパティを取得することではなく、フィールドです。これは以下のように行うことができます。
MyClass::class.declaredMemberProperties
取得フィールドは、Javaリフレクションを通じても可能である:
MyClass::class.java.declaredFields
しかし、フィールドではなく、Kotlinにおける実装の詳細は、いくつかのプロパティには何のbacking fieldを持っていない可能性があるため。可視性に関しては
、プロパティのためにあなたはゲッターの可視性修飾子をチェックすることができます
val p = MyClass::class.declaredMemberProperties.first()
val modifiers = p.javaGetter?.modifiers
注:それは簡単なprivate val
または@JvmField
の使用の場合はnull
です。代わりにp.javaField
を調べることができます。
modifiers
がnull
ではない場合は、Modifier.isPrivate(...)
で確認してください。
Kotlinのプロパティはseparate visibility modifiers for getter and setterになる可能性がありますが、セッターのアクセスはゲッターのアクセスよりも許容的ではなく、実質的にプロパティの可視性になります。
を逃したので、MyClassオブジェクトを作成し、これらの 'declaredFields'( Javaリフレクション)を 'Field.name'と組み合わせて使用しますか? – Ivaro18
確かに、Kotlinリフレクションのドキュメントは、API docsはKClass.membersの機能があります。また、そのメソッドの宣言にジャンプすることもできますし、ソースコード内にもそのメソッドが記述されていることがわかります。
フィールド(生のJavaクラス)またはプロパティ(javabeansまたはKotlinクラス)に興味がありますか? Kotlinクラスだけでなく、Javaクラスも扱っていますか? –
コトリンクラスだけですが、私の特定の問題のために@hotkeyのソリューションが有効でした – Ivaro18
"このコールに関するドキュメントはありません_" - そのドキュメントのリンクは以下のとおりです。 –