GetFieldList.java
- /***************************************************************************
- Copyright 2013 Emily Estes
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ***************************************************************************/
- package net.metanotion.util.reflect;
- import java.lang.reflect.Field;
- import net.metanotion.util.Dictionary;
- /** Traverse a sequence of fields from a parent object through the references
- and return the value of the final field. Basically it looks up pointer chases like
- "foo.bar.baz".
- */
- public final class GetFieldList implements Dictionary {
- private final Field[] fields;
- /** Create a new instance that looks up the result of a dereference sequence.
- @param f The sequence of fields to dereferenece.
- */
- public GetFieldList(Field[] f) { this.fields = f; }
- @Override public Object get(Object instance) {
- try {
- for(Field f: fields) { instance = f.get(instance); }
- return instance;
- } catch (IllegalAccessException iae) { throw new RuntimeException(iae); }
- }
- }