java field 获得值_反射通用获取字段值

本文介绍如何通过动态调用getter方法获取Java对象中的字段值,特别关注在处理继承类时的递归查找,并提供示例代码。适用于开发者在处理类继承和字段访问时的高效实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

像之前回答的那样,您应该使用:

Object value = field.get(objectInstance);

有时更喜欢的另一种方法是动态调用getter。示例代码:

public static Object runGetter(Field field, BaseValidationObject o)

{

// MZ: Find the correct method

for (Method method : o.getMethods())

{

if ((method.getName().startsWith("get")) && (method.getName().length() == (field.getName().length() + 3)))

{

if (method.getName().toLowerCase().endsWith(field.getName().toLowerCase()))

{

// MZ: Method found, run it

try

{

return method.invoke(o);

}

catch (IllegalAccessException e)

{

Logger.fatal("Could not determine method: " + method.getName());

}

catch (InvocationTargetException e)

{

Logger.fatal("Could not determine method: " + method.getName());

}

}

}

}

return null;

}

还应注意,当您的类继承自另一个类时,您需要递归确定Field。例如,获取给定类的所有字段;

for (Class> c = someClass; c != null; c = c.getSuperclass())

{

Field[] fields = c.getDeclaredFields();

for (Field classField : fields)

{

result.add(classField);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值