class User{
Account account;
String name;
}
class Account {
Integer amount;
}
**main :**
User u = new User();
Field field = u.getClass().getDeclaredField("account");
field.setAccessible(true);
Field amount = field.getType().getDeclaredField("amount");
amount.set(field, new Integer(1000));
console:
Exception in thread "main" java.lang.IllegalArgumentException: Can not set
java.math.BigDecimal field com.company.Account.amount to java.lang.reflect.Field
如何将值设置为帐户。
答案 0 :(得分:3)
您需要创建Account
类型的对象,填充它(直接或通过反射)并使用它来设置account
实例的User
字段。
User u = new User();
Field field = u.getClass().getDeclaredField("account");
field.setAccessible(true);
Account account = new Account();
account.amount = new Integer(1000);
field.set(u, account);
与往常一样,javadoc解释了Field#set(Object, Object)
的工作原理。
设置指定的此
Field
对象所表示的字段 对象参数指定的新值。新的价值是 如果基础字段具有基本类型,则自动解包。