title: Set Value of Private Static Field
body: <p>I want to set the value of a private field using reflection for unit testing.</p>
  
  <p>Problem is, that field is static.</p>
  
  <p>Here's what I'm working from:</p>
  
  <pre><code>/**
     * Use to set the value of a field you don't have access to, using reflection, for unit testing.
     * 
     * Returns true/false for success/failure.
     * 
     * @param p_instance an object to set a private field on
     * @param p_fieldName the name of the field to set
     * @param p_fieldValue the value to set the field to
     * @return true/false for success/failure
     */
    public static boolean setPrivateField(final Object p_instance, final String p_fieldName, final Object p_fieldValue) {
      if (null == p_instance)
        throw new NullPointerException("p_instance can't be null!");
      if (null == p_fieldName)
        throw new NullPointerException("p_fieldName can't be null!");
  
      boolean result = true;
  
      Class&lt;?&gt; klass = p_instance.getClass();
  
      Field field = null;
      try {
        field = klass.getDeclaredField(p_fieldName);
  
        field.setAccessible(true);
        field.set(p_instance, p_fieldValue);
  
      } catch (SecurityException e) {
        result = false;
      } catch (NoSuchFieldException e) {
        result = false;
      } catch (IllegalArgumentException e) {
        result = false;
      } catch (IllegalAccessException e) {
        result = false;
      }
  
      return result;
    }
  </code></pre>
  
  <p>I realize this has probably already been answered on SO, but my search didn't turn it up...</p>