【Java】フィールド(Field)の型を判定する方法

Javaでフィールド(Field)の型を判定するには、リフレクション(Reflection)APIを使います。

これは、実行時にクラスやフィールドの情報を取得したい場合に使う機能です。


✅ 基本:Field.getType() を使う

java
import java.lang.reflect.Field;

class Person {
    public String name;
    public int age;
}

public class Main {
    public static void main(String[] args) throws Exception {
        // PersonクラスのClassオブジェクトを取得
        Class<?> clazz = Person.class;

        // フィールド一覧を取得
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            System.out.println("フィールド名: " + field.getName());
            System.out.println("型: " + field.getType().getName());
            System.out.println("----------------------");
        }
    }
}

🔽 出力例:

markdown
フィールド名: name
型: java.lang.String
----------------------
フィールド名: age
型: int
----------------------

✅ 型の判定(特定型かどうかチェック)

java
if (field.getType() == String.class) {
    System.out.println("このフィールドはString型です");
}

if (field.getType().isPrimitive()) {
    System.out.println("このフィールドはプリミティブ型です");
}

🔸 追加情報:型に関するメソッド一覧(Class<?> 型)

メソッド 説明
getType() フィールドの型を返す
isPrimitive() プリミティブ型かどうか判定
isAssignableFrom(Class<?>) 代入可能な型かどうか確認
getName() / getSimpleName() 型の完全名/短縮名を取得

✅ 応用:ジェネリクスの型を取得したいとき(※やや高度)

ジェネリクス(例:List<String>)の情報は通常 Field.getType() ではわかりませんが、

Field.getGenericType() を使うことで詳細な型情報にアクセスできます(ParameterizedType など)。

❗ 注意点

  • フィールドが private の場合、アクセスには setAccessible(true) が必要です。

  • リフレクションは遅くなる可能性があるので大量処理には注意。


💡 要約

目的 方法
フィールドの型名を取得 field.getType().getName()
型が String か判定 field.getType() == String.class
プリミティブ型か確認 field.getType().isPrimitive()
管理人
Javaの記事の一覧はJava にまとめてあります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP