Javaでクラスのフィールドを取得設定するFieldクラスの使い方

Javaでクラスのフィールドを取得設定するFieldクラスの使い方

Javaでクラスのフィールドを取得設定するFieldクラスの使い方です。

SampleDtoというDTOクラスがあるとします。

フィールドは以下です。

String name;
BigDecimal age;

dto.getType()でそのフィールドの型を取得することができます。

dto.getType()がBigDecimalの場合、dto.getType().getSuperclass()で、BigDecimalのスーパークラスであるNumberを取得することができます。

DTOのそれぞれのプロパティは以下のように取得することができます。

for (Field field : dto.getClass.getDeclaredFields()) {
}

以下、Fieldクラスの使い方です。

package jp.confrage;

import java.lang.reflect.Field;
import java.math.BigDecimal;

public class Test1{
  public static void main(String[] args) {
    SampleDto dto = new SampleDto();
    dto.setName("Yamada");
    dto.setAge(BigDecimal.TEN);

    for (Field field : dto.getClass().getDeclaredFields()) {
      field.setAccessible(true);
      System.out.println(field.getName());
      try {
        System.out.println(field.get(dto));
      } catch (IllegalArgumentException | IllegalAccessException e) {
        e.printStackTrace();
      }
      System.out.println(field.getType());
    }
  }
}

結果は以下のようになります。

name
Yamada
class java.lang.String
age
10
class java.math.BigDecimal

コメント

タイトルとURLをコピーしました