ReflectionUtils { public static Field getFieldFromBean(Class<?> clazz, String fieldName) { return getFieldFromBean(clazz, fieldName, clazz); } private  ReflectionUtils(); static PropertyDescriptor findPropertyDescriptor(Class<?> objectClass, String fieldName,
                                                            HintContainer deepIndexHintContainer); static DeepHierarchyElement[] getDeepFieldHierarchy(Class<?> parentClass, String field,
                                                               HintContainer deepIndexHintContainer); static Method getMethod(Object obj, String methodName); static Method getMethod(Class<?> clazz, String methodName); static Method findAMethod(Class<?> clazz, String methodName, BeanContainer beanContainer); static PropertyDescriptor[] getPropertyDescriptors(Class<?> objectClass); static Field getFieldFromBean(Class<?> clazz, String fieldName); static Object invoke(Method method, Object obj, Object[] args); static Method getMethod(Class<?> clazz, String name, Class<?>[] parameterTypes); static T newInstance(Class<T> clazz); static Class<?> determineGenericsType(Class<?> parentClazz, PropertyDescriptor propDescriptor); static Class<?> determineGenericsType(Class<?> clazz, Method method, boolean isReadMethod); static Class<?> determineGenericsType(Type type); static Method getNonStandardSetter(Class<?> clazz, String fieldName);  }
@Test public void shouldGetField() { Field field = ReflectionUtils.getFieldFromBean(GrandChild.class, "c"); assertNotNull(field); }
@Test public void shouldGoToSuperclass() { Field field = ReflectionUtils.getFieldFromBean(GrandChild.class, "a"); assertNotNull(field); field = ReflectionUtils.getFieldFromBean(GrandChild.class, "b"); assertNotNull(field); }
@Test public void shouldModifyAccessor() { Field field = ReflectionUtils.getFieldFromBean(BaseBean.class, "a"); assertNotNull(field); }
@Test(expected = MappingException.class) public void shouldFailWhenFieldMissing() { ReflectionUtils.getFieldFromBean(GrandChild.class, "d"); }