The FieldValue class defines a {@link ClassExtension} for JavaBean-like propertyaccess on target objects. Static methods {@link #getFieldValue(Object,String)}and {@link #setFieldValue(Object,String,Object)} are provided for convenience.Higher performance access can be achieved by caching {@link FieldPath} instancesfor particular key paths. Not only does that avoid per-access accessor lookup, but the field path caches {@link FieldValueSetter} and {@link FieldValueGetter} instancesfrom its most recent lookup and can reuse them if the next access targets the same class.
The default implementation of FieldValue is {@link FieldValue_Object} -- it resolvesproperty access using reflection to get/set using accessor methods or direct field access. (note that, unlike JavaBeans, FieldValue_Object will resolve a get on key "foo" by checking for foo(), getFoo, and the fields named foo and _foo).
Other specialized implementation of FieldValue exist for Maps, XML Nodes, etc.