Set the value of the field of the object to the given value. : Field « Reflection « Java






Set the value of the field of the object to the given value.

       
//package tester.utilities;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import sun.reflect.FieldAccessor;
import sun.reflect.ReflectionFactory;

/**
 * This class can be used to set field values regardless of the modifiers.
 * 
 * @author Weston Jossey
 * @since Feb 1 2009
 */
public class ReflectionHelper {

  private static final String MODIFIERS_FIELD = "modifiers";

  private static final ReflectionFactory reflection = ReflectionFactory
      .getReflectionFactory();

  /**
   * Set the value of the field of the object to the given value.
   * 
   * @param original
   *            object to modify
   * @param field
   *            field to modify
   * @param value
   *            new value for the given object and field
   * @throws NoSuchFieldException
   * @throws IllegalAccessException
   */
  public static void setStaticFinalField(Object original, Field field,
      Object value) throws NoSuchFieldException, IllegalAccessException {
    // we mark the field to be public
    field.setAccessible(true);
    // next we change the modifier in the Field instance to
    // not be final anymore, thus tricking reflection into
    // letting us modify the static final field
    Field modifiersField = Field.class.getDeclaredField(MODIFIERS_FIELD);
    modifiersField.setAccessible(true);
    int modifiers = modifiersField.getInt(field);
    // blank out the final bit in the modifiers int
    modifiers &= ~Modifier.FINAL;
    modifiersField.setInt(field, modifiers);
    FieldAccessor fa = reflection.newFieldAccessor(field, false);
    fa.set(original, value);
  }
}

   
    
    
    
    
    
    
  








Related examples in the same category

1.Field Reflection
2.How to set public field objects
3.Class Reflection: field informationClass Reflection: field information
4.Object Reflection: get field valueObject Reflection: get field value
5.Object Reflection: set valueObject Reflection: set value
6.Get field of a class object and set or get its value
7.All Fields Snippet
8.Field modifiers: isSynthetic, isEnumConstant
9.Field with annotations
10.Set private field value
11.Get fields of a class object
12.Get all object accessible public fields
13.Getting the Field Objects of a Class Object: By obtaining a list of all declared fields.
14.Getting the Field Objects of a Class Object: By obtaining a list of all public fields, both declared and inherited.
15.Getting the Field Objects of a Class Object: By obtaining a particular Field object.
16.Get all declared fields from a class
17.Retrieving a Predefined Color by Name
18.Get a variable value from the variable name
19.Fetches all fields of all access types from the supplied class and super classes
20.Checks whether the specified class contains a field matching the specified name.
21.whether given field is a "public static final" constant
22.Process bean properties getter by applying the JavaBean naming conventions.
23.Fetches the property descriptor for the named property of the supplied class
24.Find Field
25.Return a list of all fields (whatever access status, and on whatever superclass they were defined) that can be found on this class.
26.Get all fields of a class.
27.Find field 2
28.Get class field/property
29.Accessible Field Iterator
30.Adds all Fields (from Class.getFields) to the list
31.Retrieve a value from a property
32.Fast Property accessor for a single class.