1. ホーム
  2. java

[解決済み] Java リフレクションですべてのプライベートフィールドを取得する

2023-06-30 05:15:39

質問

javaのあるクラスのすべてのプライベートフィールドとその型を取得する方法はあるのでしょうか。

例えば、私がクラスを持っているとします。

class SomeClass {
    private String aaa;
    private SomeOtherClass bbb;
    private double ccc;
}

ここで、すべてのプライベートフィールド ( aaa , bbb , ccc ) のクラス SomeClass (前もってすべてのフィールドの名前を知っているわけではありません) そして、それらの型をチェックします。

どのように解決するのですか?

すべてのフィールドを取得するためには、メソッド getDeclaredFields()Class . そして、各フィールドのモディファイアをチェックして、プライベートなものを見つける必要があります。

List<Field> privateFields = new ArrayList<>();
Field[] allFields = SomeClass.class.getDeclaredFields();
for (Field field : allFields) {
    if (Modifier.isPrivate(field.getModifiers())) {
        privateFields.add(field);
    }
}

なお getDeclaredFields() は継承されたフィールドを返さないことに注意してください。

最終的に、フィールドの型を取得するのは、メソッド フィールド.getType() .