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
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント