Javaで、あるクラスのフィールド変数がstaticかどうか、privateかどうか等を調べるには
Javaで、あるクラスのフィールド変数をすべて取得するには、getDeclaredFieldsメソッドを使う方法があります。
import java.lang.reflect.Field; public class getDeclaredFieldsTest { public static void main(String[] args) { for (Field field : Test.class.getDeclaredFields()) { System.out.printf("%s\n", field.getName()); } } public static class Test { private Integer privateInteger; private static Integer privateStaticInteger; public Integer publicInteger; public static Integer publicStaticInteger; } }
出力結果:
privateInteger privateStaticInteger publicInteger publicStaticInteger
個々のフィールドがstaticかどうか、privateかどうか等を調べるには、ModifierクラスのisStaticメソッドやisPrivateメソッドを使う方法があります。
import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class getDeclaredFieldsTest { public static void main(String[] args) { for (Field field : Test.class.getDeclaredFields()) { if (Modifier.isPrivate(field.getModifiers())) { System.out.print("private "); } else { System.out.print("public "); } if (Modifier.isStatic(field.getModifiers())) { System.out.print("static "); } System.out.printf("%s\n", field.getName()); } } public static class Test { private Integer privateInteger; private static Integer privateStaticInteger; public Integer publicInteger; public static Integer publicStaticInteger; } }
出力結果:
private privateInteger private static privateStaticInteger public publicInteger public static publicStaticInteger
Javaのリフレクションについてはこのサイトが詳しいです。
Javaリフレクションメモ(Hishidama's Java Reflection Memo)