我有一个Java泛型方法来使用反射来获取字段的值:
private static Object getFieldValue(Object object, final String fieldName) {
if (null == object) {
return null;
}
Class<?> clazz = object.getClass();
while (clazz != null) {
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
try {
return field.get(object);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
clazz = clazz.getSuperclass();
}
}
return null;
}
它适用于简单的字段名称,例如:
getfieldValue (project, "title")
我想从相关对象的字段中获取值,例如:
getfieldValue (project, "task.title")
答案 0 :(得分:1)
简单的解决方案是编写一些代码将"task.title"
拆分为组件(例如使用String.split(...)
),然后将getFieldValue
个调用序列链接在一起。
答案 1 :(得分:0)
使用apache bean util: http://www.java2s.com/Code/Java/Apache-Common/UseBeanUtilstogetpropertyvaluefromobject.htm
显然你可以编写自己的代码(拆分一个字符串,如“task.title”),并递归使用你的getField。但它已经存在于apache的代码中。