| FieldInstance.java |
/***************************************
* *
* JBoss: The OpenSource J2EE WebOS *
* *
* Distributable under LGPL license. *
* See terms of license at gnu.org. *
* *
***************************************/
package org.jboss.util;
import java.lang.reflect.Field;
/**
* A <tt>FieldInstance</tt> refers to a specific reflected field on an object.
*
* @version <tt>$Revision: 1.1 $</tt>
* @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
*/
public class FieldInstance
{
/** Field */
protected final Field field;
/** Instance */
protected final Object instance;
/**
* Construct a new field instance.
*
* @param instance The instance object the given field belongs to.
* @param fieldName The name of the field to find in the instance.
*
* @throws NullArgumentException Instance or fieldName is <tt>null</tt>.
* @throws NoSuchFieldException
*/
public FieldInstance(final Object instance, final String fieldName)
throws NoSuchFieldException
{
if (instance == null)
throw new NullArgumentException("instance");
if (fieldName == null)
throw new NullArgumentException("fieldName");
// Get the field object
field = instance.getClass().getField(fieldName);
// Check if the field is assignable ?
if (! field.getDeclaringClass().isAssignableFrom(instance.getClass()))
throw new IllegalArgumentException
("field does not belong to instance class");
this.instance = instance;
}
/**
* Get the field.
*
* @return Field.
*/
public final Field getField() {
return field;
}
/**
* Get the instance.
*
* @return Instance.
*/
public final Object getInstance() {
return instance;
}
/**
* Get the value of the field instance.
*
* @return Field value.
*
* @throws IllegalAccessException Failed to get field value.
*/
public final Object get() throws IllegalAccessException {
return field.get(instance);
}
/**
* Set the value of the field instance
*
* @param value Field value.
*
* @throws IllegalAccessException Failed to set field value.
*/
public final void set(final Object value) throws IllegalAccessException {
field.set(instance, value);
}
}
| FieldInstance.java |