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)