-1
インスタンス変数 "customerId"の値を取得したい。私はこのフィールドを返すapisのセットを持っています。いくつかのapisでは、このクラスは基本クラスの下にあります。いくつかのケースでは、それはいくつかのレベルのネストされています。インスタンス変数の場所に関係なく、フィールド名 "customerId"で値をフェッチする方法はありますか?Java Reflection - ネストされたクラス内のフィールドの値を取得
例:これははcustomerIdという名前のフィールドと、このフィールドに格納されている値と地図を返します
public static Map<Field, Integer> getFieldWithName(Object o, Map<Field, Integer> list) throws IllegalAccessException {
Class<?> c = o.getClass();
for(Field field : c.getDeclaredFields()) {
if(field.getName().equals("customerId") && field.getType().equals(int.class)) {
list.put(field, field.getInt(o));
} else {
if(!field.isAccessible()) {
field.setAccessible(true);
}
getFieldWithName(field.get(o), list);
}
}
return list;
}
:
Customer
customerId
Order
Customer
customerId
Account
Order
customerId
循環参照存在の場合、このコードは例外を生成します。その後、このサイトの名前が付けられます。 'customerId'が' o'のスーパークラスで宣言されている場合も処理しません。そしてそれは 'NullPointerException'になりがちです。 – user3707125
本当に、それを行う方法を示したかっただけです。 – STersteeg
ありがとう、試してみる –