1. ホーム
  2. java

[解決済み] Javaクラスで宣言されたstaticフィールドのみを取得する

2022-04-20 15:27:41

質問

以下のようなクラスがあります。

public class Test {
    public static int a = 0;
    public int b = 1;
}

リフレクションを使って、静的フィールドのリストだけを取得することは可能でしょうか?を使ってすべてのフィールドの配列を得られることは知っています。 Test.class.getDeclaredFields() . しかし Field インスタンスが静的フィールドを表しているかどうか。

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

このようにできます。

Field[] declaredFields = Test.class.getDeclaredFields();
List<Field> staticFields = new ArrayList<Field>();
for (Field field : declaredFields) {
    if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
        staticFields.add(field);
    }
}